我想从多个表中获取数据。
public class Student{
private int id;
private String name;
private List<Course> course;
}
public class Course{
private int id;
private String name;
private int studentId;
}
我想使用springdatajpa从student和course表中获取数据并Map到student对象。我怎样才能有效地做到这一点?
2条答案
按热度按时间ego6inou1#
你可以用set代替list。
总是在一个区域使用mapped by,如果在多个区域使用mapped by,它将创建一个额外的表。
您可以使用fetch类型eager或lazy。默认情况下,它是lazy,您必须使用@transactional of lazy。
希望这个答案能解决你的疑问!。
ukdjmx9f2#
请注意,起点可能是错误的。我假设一个学生可以选择多个课程,一个课程可以由多个学生选择。所以它实际上是一个
@ManyToMany
关系,但不是@ManyToOne
或者@OneToMany
.您肯定需要一个联合表来将它们的主键从两个表Map到联合表中。
注意这里所有的修改。
对于保存到数据库中的数据,
Long
是一个比int
. 类似地,例如,使用Boolean
而不是boolean
.想想
Student
作为管理多对多关系的一方Course
作为目标方。在目标端,使用@JsonIgnore
以及@ToString.Exclude
注解以避免无限递归、stackoverflow或oom。使用
Set
而不是List
如果一个学生不应该选择完全相同的课程。它确保人们仍然可以选择2017 fall Maths
以及2018 fall Maths
,而不能选择2017 fall Maths
两次。