我有三个实体:大学、学生和科目。大学和学生之间是多对多的关系,学生和科目之间也是多对多的关系。它们的实现如下。 大学:
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(
name="UNIV_TO_STD_REL"
, joinColumns={
@JoinColumn(name="UNIV_DBKY", referencedColumnName="UNIV_DBKY")
}
, inverseJoinColumns={
@JoinColumn(name="STD_DBKY", referencedColumnName="STD_DBKY")
}
)
private List<Student> students;<br>
学生:
@ManyToMany(mappedBy="students")
private List<University> universities;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(
name="STD_TO_SUB_REL"
, joinColumns={
@JoinColumn(name="STD_DBKY", referencedColumnName="STD_DBKY")
}
, inverseJoinColumns={
@JoinColumn(name="SUB_DBKY", referencedColumnName="SUB_DBKY")
}
)
private List<Subject> subjects;<br>
主题:
@ManyToMany(mappedBy="subjects")
private List<Student> students;
现在,我想为一所特定的大学招收学生。但是不涉及相关学科。因此,我以下面的方式调用存储库:
University u=UniversityRepo.findByUnivId("1234");
u.getStudents();
然而,这个操作返回了学生名单和相关科目,看起来当我调用u.getStudents()时,它不仅获取了学生,还获取了科目,尽管FetchType是LAZY。请提供建议。
编辑: UniversityRepo
public interface UniversityRepo extends JpaRepository<University, BigInteger> {
public University findByUnivId(String id);
}
u.getStudents().get(0).getName()
。 - AlexGreg