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{
...