簡體   English   中英

FETCH JOIN最大深度?

[英]FETCH JOIN maximum depth?

W試圖通過三個級別獲取聯接:

JOIN FETCH entity1.collection1.collection2  // two OneToMany relations

但得到了:

org.hibernate.HibernateException: Errors in named queries: [...]

是因為它太深了,還是因為無法以這種方式獲取集合集合? 如果相關,我的最大獲取深度為3。

同時,我可以從另一側開始執行三重JOIN FETCH:

JOIN FETCH entity3.entity2.entity1  // two ManyToOne relations

不知何故,我在JPA規范或Hibernate文檔中找不到任何限制此子句深度的內容。

collection1的類型為Collection Collection沒有collection2字段。 這就是我對這些查詢的理由。

您必須在集合上創建顯式連接:

select e from Entity1 e
left join fetch e.collection1 as c1
left join fetch c1.collection2 as c2

請注意,這將產生笛卡爾積,因此可能會返回大量行。 另請注意,只有兩個集合中的一個至少是一個集合才有可能。 如果它們都是包,那么Hibernate在執行查詢時會拋出異常。

暫無
暫無

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

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