簡體   English   中英

FetchType.LAZY不適用於Spring數據jpa中的@manyToMany

[英]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 JPALocalContainerEntityManagerFactoryBean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM