【发布时间】:2022-02-17 06:47:49
【问题描述】:
在将 kickstart 框架与 spring 一起使用时,如何在 GraphQL 中正确注册 Java 枚举?
在简单的 Java Spring 应用程序中尝试使用具有等效 Java 枚举的 GraphQL 模式枚举时,会引发以下异常:
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
}
【问题讨论】:
标签: java graphql graphql-java-tools