FETCH JOIN 最大深度?

2023-12-26

W 试图获取三个级别的连接:

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

but got:

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

是因为太深了,还是因为这样无法取出集合的集合?如果相关的话,我的最大获取深度是 3。

同时,我可以从另一侧开始执行三重 JOIN FETCH:

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

不知何故,我在 JPA 规范或 Hibernate 文档中找不到任何会限制本条款深度的内容。


collection1属于类型Collection. And a Collection没有collection2场地。这就是我对此类查询的推理方式。

您必须在集合上创建显式联接:

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

请注意,这将产生笛卡尔积,因此可能返回大量行。另请注意,只有当两个集合中至少有一个是集合时才有可能。如果它们都是包,Hibernate 在执行查询时会抛出异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FETCH JOIN 最大深度? 的相关文章

随机推荐