【发布时间】:2017-05-15 10:40:05
【问题描述】:
我有一个 Spring 应用程序,其中包含 2 个具有多对多关系的实体。有学生和小组。一个学生可以是多个小组的成员,一个小组可以有多个学生。
学生模型
@Entity
@Table(name = "STUDENTS")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Student extends AbstractUser {
//Fields
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Group.class)
@JoinTable(name = "GROUPS_STUDENTS",
joinColumns = { @JoinColumn(name = "student_id") },
inverseJoinColumns = { @JoinColumn(name = "group_id") })
private List<Group> groups = new ArrayList<Group>();
//Constructors
public Student(String password, String firstName, String lastName, String email){
super(password, firstName, lastName, email);
}
public Student(){
}
//Setters and getters
public List<Group> getGroups() {
return groups;
}
public void setGroups(List<Group> groups) {
this.groups = groups;
}
}
组模型
@Entity
@Table(name = "GROUPS")
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id")
public class Group implements Item, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false, unique = true)
private String name;
@Column(name = "year", nullable = false, length = 1)
private int year;
@ManyToMany(mappedBy = "groups", targetEntity = Student.class)
private List<Student> students;
public Group(String name, int yearOfStudy) {
this.setName(name);
this.setYear(yearOfStudy);
}
...
}
问题是当我请求显示所有学生时,如果 2 个学生在同一个组中,他们会出现在一个层次结构中,而不是一个接一个。我的意思是 JSON 太深了。我不知道如何准确解释,但我会举个例子。
它的外观
[
{
"id": 2,
"password": "$2a$10$bxieGA7kWuEYUUMbYNiYo.SbGpo7X5oh8ulUsqCcrIR2cFN2HiQP2",
"firstName": "First",
"lastName": "Last",
"email": "name@mail.com",
"groups": [
{
"id": 1,
"name": "G1",
"year": 0,
"users": [
2,
{
"id": 1,
"password": "$2a$10$9pfTdci7PeHtzxuAxjcOsOjPSswrU35/JOOeWPpgVhJI4tD2YpZdG",
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@mail.com",
"groups": [
1
]
}
]
}
]
},
1
]
应该如何显示
{
"id": 2,
"password": "$2a$10$bxieGA7kWuEYUUMbYNiYo.SbGpo7X5oh8ulUsqCcrIR2cFN2HiQP2",
"firstName": "First",
"lastName": "Last",
"email": "name@mail.com",
"groups": [
{
"id": 1,
"name": "G1",
"year": 0,
}
]
},
{
"id": 1,
"password": "$2a$10$9pfTdci7PeHtzxuAxjcOsOjPSswrU35/JOOeWPpgVhJI4tD2YpZdG",
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@mail.com",
"groups": [
{
"id": 1,
"name": "G1",
"year": 0
}]
}
]
你知道如何解决这个问题吗?我不知道如何准确描述我的问题,这就是为什么我还没有找到解决方案。任何帮助将不胜感激。谢谢。
【问题讨论】:
标签: java json spring hibernate