在 GraphQL 和 Spring Boot 中使用嵌套输入类型的异常

Exception using nested Input Types in GraphQL and Spring Boot

我正在尝试创建一个 Mutation 来接收这样的输入类型:

input Cart {
    items: [CartItem!]!
    client: String!
}

input CartItem {
    productId: Int!
    qty: Int!
}

我的突变是这样的:

type Mutation {
    createOrder(cart: Cart!): Order!
}

但是当我尝试 运行 我的应用程序时,出现以下异常:

Caused by: com.coxautodev.graphql.tools.SchemaError: Expected type 'CartItem' to be a GraphQLOutputType, but it wasn't!  Was a type only permitted for object types incorrectly used as an input type, or vice-versa?

怎么回事?

这是 Graphql-java-tools 的一个已知错误:https://github.com/graphql-java-kickstart/graphql-java-tools/issues/216

输入 java 类型应该有 public 吸气剂。

您应该为它们各自的 graphql 模式声明启动一个适当的 class 实现。

您可以在此处查看示例:https://github.com/MerNat/graphql-spring-boot-nested-input-types-example

除了输入 java 类型应该有 public getter,输入 java 类型还应该实现 Serializable 接口