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