java-graphql - невозможно сопоставить определение типа с типом java

Я использую graphql-spring-boot для обслуживания запросов graphql из моего проекта spring-boot. Прямо сейчас я работаю над сопоставлением определений типа схемы graphql с моими весенними энтитами. По какой-то причине я получаю следующую ошибку:

Caused by: com.coxautodev.graphql.tools.SchemaClassScannerError: Unable to match type definition (ListType{type=TypeName{name='HomestayInfo'}}) with java type (class ninja.familyhomestay.domain.HomestayInfo): Java class is not a List or generic type information was lost: class ninja.familyhomestay.domain.HomestayInfo
    at com.coxautodev.graphql.tools.TypeClassMatcher.error(TypeClassMatcher.kt:19)
    at com.coxautodev.graphql.tools.TypeClassMatcher.match(TypeClassMatcher.kt:79)
    at com.coxautodev.graphql.tools.TypeClassMatcher.match(TypeClassMatcher.kt:25)

Вот мое определение схемы graphql для HomestayInfo:

type HomestayInfo{
    homestayName: String
    homestayShortDescription: String
    homestayDescription: String
    address: Address
    rooms: [Room]
    houseImages: [HouseImage]
    pets: [Pet]
}

и соответствующий объект kotlin:

@Entity
@Table(name = "homestay_info")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "homestay_info")
data class HomestayInfo(
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    var id: Long? = null,

    @Column(name = "homestay_name")
    var homestayName: String? = null,

    @Column(name = "homestay_short_description")
    var homestayShortDescription: String? = null,

    @Column(name = "homestay_description")
    var homestayDescription: String? = null,

    @OneToOne
    @JoinColumn(name = "address_id")
    var address:Address?=null,

    @OneToMany(mappedBy = "homestayInfo", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
    var rooms: MutableSet<Room> = HashSet(),

    @OneToMany(mappedBy = "homestayInfo", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
    var houseImages: MutableSet<HouseImage> = HashSet(),

    @OneToMany(mappedBy = "homestayInfo", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
    var pets: MutableSet<Pet> = HashSet()
) : Serializable

Я не вижу ничего плохого в отображении. Есть идеи?

1 ответ

Добавление скалярной даты в начало вашего файла schema.graphqls должно помочь! Итак, ваш файл будет выглядеть так:

scalar Date

schema {           // not sure if your file has this, but mine does

   query: Query

}

type HomestayInfo{
...
Другие вопросы по тегам