【发布时间】:2020-12-11 17:02:23
【问题描述】:
我打算创建一个具有多对多关系的 API。
我试图输出的 JSON 如下。
[
{
"id": 12,
"firstname": "asdfghjkl ",
"surname": "asda",
"techniqueSet": [
{
"id": 0,
"techniqueName": "java",
},
{
"id": 1,
"techniqueName": "C#",
}
]
},
{
"id": 49,
"firstname": "asc",
"surname": "as",
"techniqueSet": []
},
{
"id": 90,
"firstname": "JACOB",
"surname": "LOL",
"techniqueSet": [
{
"id": 0,
"techniqueName": "Python",
},
{
"id": 1,
"techniqueName": "Haskell",
}
]
},
{
"id": 92,
"firstname": "Omar",
"surname": "LOL",
"techniqueSet": []
}
]
但是,我得到以下信息。
[
{
"id": 12,
"firstname": "asdfghjkl ",
"surname": "asda",
"techniqueSet": [
{
"id": 0,
"techniqueName": "Java",
"playersSet": [
12
]
},
{
"id": 1,
"techniqueName": "C#",
"playersSet": [
12,
{
"id": 90,
"firstname": "Jacob",
"surname": "LOL",
"techniqueSet": [
1,
{
"id": 2,
"techniqueName": "Python",
"playersSet": [
12,
90
]
},
{
"id": 3,
"techniqueName": "Haskell",
"playersSet": [
90
]
}
]
}
]
},
2
]
},
{
"id": 49,
"firstname": "asc",
"surname": "as",
"techniqueSet": []
},
{
"id": 90,
"firstname": "LOL",
"surname": "LOL",
"techniqueSet": []
},
91,
{
"id": 92,
"firstname": "Omar",
"surname": "LOL",
"techniqueSet": []
}
]
我的 Java 以下是实体
@Entity
@Table(name = "players")
@EntityListeners(AuditingEntityListener.class)
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Players {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="player_id")
private int id;
private String firstname;
private String surname;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "able_to_use",
joinColumns = {@JoinColumn(name = "player_id", referencedColumnName = "player_id")},
inverseJoinColumns = {@JoinColumn(name = "technique_id", referencedColumnName = "id")}
)
private List<Technique> techniqueSet ;
//Getters and setters
我的第二个实体
@Entity
@Table(name = "technique")
@EntityListeners(AuditingEntityListener.class)
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Technique {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "technique_name")
private String techniqueName;
@ManyToMany(mappedBy = "techniqueSet", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Players> playersSet ;
//Getters and Setter
你能帮忙吗?我是 JPA 框架的新手。我认为错误可能是每个实体中引用联接的方式。
【问题讨论】:
标签: java mysql spring hibernate spring-data-jpa