GraphQLResolver 抛出"Value already present: Pojo.class"



这是我的GraphQL模式中的相关位:

type pojo {
details: detailspojo,
name: String,
method: String,
ext_Path: String,
int_Path: String,
mle: String
}
type detailspojo{
address
}

我的用例要求我从数据库查询中获取除detailspojo和从HTTP请求中获取detailspojo之外的所有详细信息。

我构建了一个实现GraphQLQueryResolver的类,其中所有字段都是从数据库中查询的。我在下面构建了实现GraphQLResolver<pojo>的类,其中pojo是我的pojo模式的DTO。

@Component
public class detailsresolver implements GraphQLResolver<pojo> {
public detailspojo getOperationalSummary(Pojo pojo) {
// Here I will be making HTTP request to get data.
return null;
}
}

我已经做了所有合适的POJO。我已经看过所有与GraphQLResolver<T>相关的教程,而且我似乎什么都做了。我仍然得到这个错误:

Caused by: graphql.kickstart.tools.SchemaClassScannerError: Error creating bimap of type => class
at graphql.kickstart.tools.SchemaClassScanner.validateAndCreateResult(SchemaClassScanner.kt:157) ~[graphql-java-tools-11.0.1.jar:na]
at graphql.kickstart.tools.SchemaClassScanner.scanForClasses(SchemaClassScanner.kt:104) ~[graphql-java-tools-11.0.1.jar:na]
at graphql.kickstart.tools.SchemaParserBuilder.scan(SchemaParserBuilder.kt:154) ~[graphql-java-tools-11.0.1.jar:na]
at graphql.kickstart.tools.SchemaParserBuilder.build(SchemaParserBuilder.kt:195) ~[graphql-java-tools-11.0.1.jar:na]
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration.schemaParser(GraphQLJavaToolsAutoConfiguration.java:125) ~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$a945e683.CGLIB$schemaParser$4(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$a945e683$$FastClassBySpringCGLIB$$ab7f3bb9.invoke(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.2.12.RELEASE.jar:5.2.12.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.2.12.RELEASE.jar:5.2.12.RELEASE]
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$a945e683.schemaParser(<generated>) ~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.12.RELEASE.jar:5.2.12.RELEASE]
... 144 common frames omitted
Caused by: java.lang.IllegalArgumentException: value already present: class com.example.project.Pojo

请告诉我该怎么办,如果有帮助的话,我愿意添加更多信息。谢谢

编辑1:我正在使用以下Maven包:

<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>11.1.0</version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>playground-spring-boot-starter</artifactId>
<version>7.1.0</version>
</dependency>

这是一个老问题,但今天我遇到了它,我设法解决了它-在我的情况下,我的模式定义中有两个查询,它们返回了不同的schema类型,但返回了相同的JAVA类型-一旦我纠正了这一点(JAVA类型应该不同(,一切都像魔术一样工作。

希望这能帮助下一个人。。。

最新更新