GraphQL Java Kickstart Tools 枚举导致异常 - 名称为 'XXX' 的预期枚举,但未找到任何枚举



在使用带有spring的kickstart框架时,Java枚举如何正确注册到GraphQL?

在简单的JavaSpring应用程序中尝试将GraphQL模式枚举与等效的Java枚举一起使用时,会引发以下异常:

Caused by: graphql.kickstart.tools.SchemaError: Expected enum with name 'CarType' but found none!
at graphql.kickstart.tools.SchemaParser.createEnumObject(SchemaParser.kt:191)
at graphql.kickstart.tools.SchemaParser.parseSchemaObjects(SchemaParser.kt:85)
at graphql.kickstart.tools.SchemaParser.makeExecutableSchema(SchemaParser.kt:112)
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration.graphQLSchema(GraphQLJavaToolsAutoConfiguration.java:147)
at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration$$EnhancerBySpringCGLIB$$1b4eddf2.CGLIB$graphQLSchema$1(<generated>)

Java端枚举类是如何注册的?我已经看到了RuntimeWiring的例子,并通过它注册了它们,但模式的创建是根据我的使用情况自动完成的,所以我找不到实现这一点的方法(或正确的挂钩(。

GraphQL模式是:

extend type Query {
cars : [Car]
}
type Car {
type : CarType
}
enum CarType {
AUDI,
BMW,
VOLKSWAGEN
}

Java枚举:

public enum CarType {
AUDI, BMW, VOLKSWAGEN
}

所以在我没有发布的代码中,我故意使用HashMap而不是Dto pojo类,其中包含枚举:

public class CarsResolver implements GraphQLQueryResolver {
public Collection<HashMap> cars() {
return emptyList();
}
}

这意味着(我认为(框架从来没有遍历集合中的类来神奇地为enum-auto创建解析器这导致了上述异常

我故意使用HashMap的原因(顺便说一句(是为了避免通用的graphql网关了解我们更广泛的系统中的Dto类型。我现在正在重新考虑这个决定:-(

相关内容

  • 没有找到相关文章

最新更新