【问题标题】:GraphQLResolver throws "Value already present: Pojo.class"GraphQLResolver 抛出“值已经存在:Pojo.class”
【发布时间】:2021-09-04 13:25:52
【问题描述】:

这是我的 GraphQL Schema 中的相关位:

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&lt;T&gt; 相关的教程,而且我似乎已经完成了所有工作。我仍然收到此错误:

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>

【问题讨论】:

    标签: java graphql


    【解决方案1】:

    这是一个较老的问题,但今天它击中了我,我设法解决了它 - 在我的例子中,我的架构定义中有两个查询返回不同的 SCHEMA 类型,但相同的 JAVA 类型 - 一旦我解决了这个问题( Java 类型应该是不同的),一切都像魔术一样工作。

    希望对下一个人有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-14
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多