gpt4 book ai didi

java - FETCH JOIN 最大深度?

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:00 25 4
gpt4 key购买 nike

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 文档中找不到任何会限制该子句深度的内容。

最佳答案

collection1Collection 类型。 Collection 没有 collection2 字段。这就是我对这类查询的推理方式。

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

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

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

关于java - FETCH JOIN 最大深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com