编写等效于pojo / entity / class

时间:2019-04-09 09:36:16

标签: java spring-boot spring-data-jpa graphql

我的应用程序中的实体类如下。

@Entity
public class User{
@Id
@Column(name = "userId")
Long userId;

@Column(name = "name")

@OneToMany(fetch = FetchType.EAGER, mappedBy="user", cascade = cascadeType.ALL)
@JsonIgnoreProperties("user")
String name;
List<PhoneNumber> phoneNumbers;

//setters ans getters
}

@Entity
Public class PhoneNumber{
@Id
@Column
Long phoneid;

String PhoneNo;

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "userId")
@JsonIgnoreProperties("phoneNumbers")
User user;
//setters and getters
}

在上述实体类中。我有两种情况:

  1. 一对多关系用户拥有多个电话号码(电话号码列表)

  2. 一对一关系很多电话号码属于一个用户

我需要同时获取数据。我怎么能写user.graphqls和phonenumber.graphqls文件来代表这些实体和graphqlseolvers也。我无法获取数据。出现以下异常

  

类型java.util.Set不能映射到GraphQL类型!由于GraphQL-Java在运行时处理擦除类型,因此只有未参数化的类才能表示GraphQL类型。

这允许java类在接口和联合类型中进行反向查找。

1 个答案:

答案 0 :(得分:0)

在GraphQL中,您需要使用类型定义实体/文档。
请为您的问题找到以下类型定义:

type User{
 userId :Long
 phoneNumbers :[PhoneNumber]
}

type PhoneNumber{
 phoneid :  Long
 PhoneNo  : String
 user: User
}