我有3个实体大学,学生和主题.大学和学生有很多关系,学生和学科也有很多关系.它们实现如下. 大学:
@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>
Run Code Online (Sandbox Code Playgroud)
学生:
@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>
Run Code Online (Sandbox Code Playgroud)
学科:
@ManyToMany(mappedBy="subjects")
private List<Student> students;
Run Code Online (Sandbox Code Playgroud)
现在,我想让一个特定的大学的学生.但不是相关的科目.所以,我正在调用存储库如下:
University u=UniversityRepo.findByUnivId("1234");
u.getStudents();
Run Code Online (Sandbox Code Playgroud)
但是,这让我回到了学生名单以及来自主题的相关科目.似乎在我调用u.getStudents()时,它不仅取得学生,还取得科目,虽然FetchType是LAZY.
请建议.
编辑: UniversityRepo
public interface UniversityRepo extends JpaRepository<University, BigInteger> {
public University findByUnivId(String id);
}
Run Code Online (Sandbox Code Playgroud)
您可能正在使用 springboot 的默认 LocalEntityManagerFactory ,它与 spring-orm 包中的 spring 数据一起提供。此 FactoryBean 的配置能力有限,建议用于仅使用 JPA 进行数据访问的独立应用程序。如果您想要为外部数据源和/或跨多个资源的全局事务设置持久性提供程序,请考虑使用 LocalContainerEntityManagerFactoryBean,或者将其部署到完整的 Java EE 应用程序服务器并通过 JNDI 访问部署的 EntityManagerFactory。这里我留下了两个重要的链接以获得更好的文档:Spring JPA,LocalContainerEntityManagerFactoryBean
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |