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