【发布时间】:2020-12-25 18:32:31
【问题描述】:
type Person {
id: ID
name: String!
contact: Contact
}
type Query {
countPersons: Long!
findByName(name: String!): [Person]!
findAllPerson: [Person]!
}
type Contact {
id: ID
emailId: String
mobileNumber: String!
}
extend type Query {
findAllContact: [Contact]!
countContacts: Long!
findByMobileNumber(mobileNumber: String!): [Contact]!
findByEmailId(emailId: String!): [Contact]!
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "persons")
public class Person extends BaseAbstractEntity {
@Column(name="person_name", nullable = false)
private String name;
@OneToOne(fetch = javax.persistence.FetchType.LAZY)
@JoinColumn(name = "contact_id", referencedColumnName = "id")
private Contact contact;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "contacts")
public class Contact extends BaseAbstractEntity {
@Column(name="contact_email_id")
private String emailId;
@Column(name="contact_mobile_number", nullable = false)
private String mobileNumber;
@OneToOne(mappedBy = "contact")
private Person person;
}
public class Query implements GraphQLQueryResolver {
private final PersonRepository personRepository;
private final ContactRepository contactRepository;
public Query(PersonRepository personRepository, ContactRepository contactRepository) {
this.personRepository = personRepository;
this.contactRepository = contactRepository;
}
public Iterable<Person> findAllPerson() {
return personRepository.findAll();
}
}
启动服务器时出错:
com.coxautodev.graphql.tools.SchemaClassScannerError: 无法将类型定义 (NonNullType{type=ListType{type=TypeName{name='Person'}}}) 与 java 类型(com.demo.graphql.entities 类.Person):Java 类不是 List 或泛型类型信息丢失:com.demo.graphql.entities.Person 类
应用程序在查询中注释掉findByName 和findAllPersonfindAllPerson 后启动:
type Query {
countPersons: Long!
# findByName(name: String!): [Person]!
# findAllPerson: [Person]!
}
我认为问题在于查询响应中的[Person] 是人员列表。
【问题讨论】:
标签: java spring-boot graphql