GraphQL Expected type to be a GraphQLInputType, but it wasn't!

136
10 ноября 2019, 02:30

Я использую GraphQL в веб-сервисе на Spring Boot и мне надо написать мутацию для обновления объектов Invoice. В схеме эти типы определены следующим образом:

invoice.graphqls:

type Invoice {
    uid: UUID
    number: String
    date: LocalDate
    arrivalDate: LocalDate
    senderDigest: String
    receiverDigest: String
    payerDigest: String
    departureKLADR: String
    arrivalKLADR: String
    departureCityUID: UUID
    arrivalCityUID: UUID
    departureCityName: String
    arrivalCityName: String
    freightInKops: Long
    serviceKind: String
    cargoKind: String
    amount: Int
    netVolume: Float
    netWeight: Float
    declaredValueInKops: Long
    createdDateTime: LocalDateTime
    updatedDateTime: LocalDateTime
    transportCompanyMSP: String
    transportCompanyName: String
    insuranceCompanyName: String
    senderItn: String
    receiverItn: String
    payerItn: String
    distinctInsurancePolicy: Boolean
    insurancePolicyRow: [InsurancePolicyRow]
}
input InvoiceInput {
    uid: UUID
    number: String
    date: LocalDate
    arrivalDate: LocalDate
    senderDigest: String
    receiverDigest: String
    payerDigest: String
    departureKLADR: String
    arrivalKLADR: String
    departureCityUID: UUID
    arrivalCityUID: UUID
    departureCityName: String
    arrivalCityName: String
    freightInKops: Long
    serviceKind: String
    cargoKind: String
    amount: Int
    netVolume: Float
    netWeight: Float
    declaredValueInKops: Long
    createdDateTime: LocalDateTime
    updatedDateTime: LocalDateTime
    transportCompanyMSP: String
    transportCompanyName: String
    insuranceCompanyName: String
    senderItn: String
    receiverItn: String
    payerItn: String
    distinctInsurancePolicy: Boolean
    insurancePolicyRow: [InsurancePolicyRowInput]
}

Здесь определены типы Invoice, которые могут ссылаться на объекты типаInsurancePolicyRow. Типы InsurancePolicyRow определены так:

insurance-policy-row.graphqls:

type InsurancePolicyRow {
    invoiceUID: UUID
    insuranceType: String
    insurancePolicyNumber: String
    insurancePolicyUID: UUID
    cargoKind: String
    invoiceDate: LocalDate
    arrivalPlannedDate: LocalDate
    departureKLADR: String
    departureCityName: String
    arrivalKLADR: String
    arrivalCityName: String
    totalSumInKops: Long
    declaredValueInKops: Long
    insuranceSum: Long
    freight: Long
    invoiceNumber: String
    extraVehicle: String
    forwardingAgent: String
    driver: String
    vehicleInfo: String
    insuranceSection: Int
}
input InsurancePolicyRowInput {
    invoiceUID: UUID
    insuranceType: String
    insurancePolicyNumber: String
    insurancePolicyUID: UUID
    cargoKind: String
    #invoiceDate: LocalDate
    #arrivalPlannedDate: LocalDate
    departureKLADR: String
    departureCityName: String
    arrivalKLADR: String
    arrivalCityName: String
    totalSumInKops: Long
    declaredValueInKops: Long
    insuranceSum: Long
    freight: Long
    invoiceNumber: String
    extraVehicle: String
    forwardingAgent: String
    driver: String
    vehicleInfo: String
    insuranceSection: Int
}

При выполнении мутаций из-за поля insurancePolicyRow: [InsurancePolicyRow] возникает исключение:

Caused by: com.coxautodev.graphql.tools.SchemaError: Expected type 'InsurancePolicyRowInput' to be a GraphQLInputType, but it wasn't!

Мутация описана так:

updateInvoice(invoice: InvoiceInput!): String

То есть для изменения данных используется мутация, принмающая input-тип InvoiceInput, в котором содержится ссылка на input-тип InsurancePloicyRowInput, но при этом парсер схемы почему-то считает, что поле insurancePolicyRow не имеет input-тип. Как исправить эту проблему?

Если убрать все поля из типа InsurancePolicyRowInput, ошибка все равно сохраняется.

READ ALSO
Не работает метод getSupportFragmentManager()

Не работает метод getSupportFragmentManager()

Я хочу реализовать Recycler View, в котором по нажатии на item будет появляться фрагментНо я у меня не работает метод getSupportFragmentManager(), я пытался подставлять...

175
Обратиться к функции другого класса

Обратиться к функции другого класса

Простите, как я могу обратиться к методу getName из активности NavigationActivity?

210
Оптимизируем кода на JAVA

Оптимизируем кода на JAVA

Задача состоит в следующем:

100