2012-07-26 11 views
0

我正在一起查詢需要加載與另一個實體有多對一關係的實體列表,這個實體與另一個實體有多對一的關係。我不需要關聯加載的任何數據,但是在查看查詢日誌時,我發現JPA自動加載它。我的理解是,發生這種情況是因爲我的JPA實現無法創建代理來代表關聯的實體,就像它可以對集合所做的那樣。如何忽略JPQL中的一對一關係?

假設我的實體是Ham,它與Sandwich具有多對一的關係。我JPQL獲得火腿的列表看起來可能是這樣:

Select H from Ham H 

有沒有辦法來明確忽略火腿與在JPQL三明治,所以我的數據庫不會與一個多餘的一系列選擇三明治查詢沒有投擲協會訴諸聯合獲取?

回答

1

當定義多對一的關係,將其標記爲「懶加載」(通過使用anotations,它是一樣的東西):

@ManyToOne(fetch=FetchType.LAZY) 

這樣的PQL預期上面會工作。但是,當你需要加載三明治時,你將不得不添加一個FETCH JOIN