[英]FetchType.LAZY is not working for @manyToMany in Spring data jpa
我有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>
學生:
@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);
}
您可能正在使用springboot的默認LocalEntityManagerFactory,它隨spring-orm包中的spring數據一起提供。 此FactoryBean具有有限的配置功能,建議用於僅使用JPA進行數據訪問的獨立應用程序。 如果要為外部DataSource和/或跨越多個資源的全局事務設置持久性提供程序,或者將其部署到完整的Java EE應用程序服務器並通過JNDI訪問已部署的EntityManagerFactory,請考慮使用LocalContainerEntityManagerFactoryBean。 在這里,我留下了兩個重要的鏈接以獲得更好的文檔: Spring JPA , LocalContainerEntityManagerFactoryBean
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.