Исключение с использованием вложенных типов ввода в GraphQL и Spring Boot

Я пытаюсь создать мутацию, которая получает такой тип ввода:

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?

В чем дело?


person Joaquín L. Robles    schedule 20.01.2020    source источник
comment
Используете ли вы CartItem где-либо еще в своей схеме, например, как часть заказа?   -  person Daniel Rearden    schedule 20.01.2020
comment
Нет, просто как тип ввода в этом случае   -  person Joaquín L. Robles    schedule 20.01.2020
comment
Убедились ли вы, что у вашего Java-класса Cart и CartItem есть общедоступные геттеры?   -  person AllirionX    schedule 21.01.2020


Ответы (2)


Это известная ошибка Graphql-java-tools: https://github.com/graphql-java-kickstart/graphql-java-tools/issues/216

Входные типы Java должны иметь общедоступные геттеры.

person AllirionX    schedule 21.01.2020

Вы должны инициировать правильную реализацию класса для их соответствующего объявления схемы graphql.

Вы можете посмотреть пример здесь: https://github.com/MerNat/graphql-spring-boot-nested-input-types-example

person MWA    schedule 21.06.2020
comment
Привет! Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - person Brian; 22.06.2020