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。SchemaClassScanner错误:无法将类型定义(NonNullType{type=ListType{type=TypeName{name='Person'}})与java类型(class.com.demo.graphql.entities.Person)匹配:java类不是List或泛型类型信息丢失:class.com.demo.graphql.entities。人
评论结束后,应用程序开始运行
findByName
和
findAllPersonfindAllPerson
在查询中:
type Query {
countPersons: Long!
# findByName(name: String!): [Person]!
# findAllPerson: [Person]!
}
我认为问题在于
[Person]
在查询响应中,它是一个人的列表。
应用程序链接:
https://github.com/shubham-v/spring-boot-graphql-demo/