【发布时间】:2012-05-21 23:13:37
【问题描述】:
我有这样的结构:
- A 包含 B 的集合(映射为非惰性)
- B 包含 C 的集合(映射为非惰性)
我想做一个查询,检索 A 对象,其中包含 B 对象,其中没有 C 对象。那可能吗?另一种方法也适用于我(如果 B-C 关系被映射为惰性并且查询检索 A,包含 B 和 C)。
谢谢!
【问题讨论】:
我有这样的结构:
我想做一个查询,检索 A 对象,其中包含 B 对象,其中没有 C 对象。那可能吗?另一种方法也适用于我(如果 B-C 关系被映射为惰性并且查询检索 A,包含 B 和 C)。
谢谢!
【问题讨论】:
不,这是不可能的。由于您将关联本身标记为预先加载,因此 Hibernate 将始终预先加载此关联。
如果您将关联标记为惰性(toMany 关联的默认设置),那么您可以选择在查询中急切地获取它们,使用 join fetch:
select a from A a left join fetch a.bs b left join fetch b.cs
请注意,如果两个集合都是袋子(即没有索引列的列表),这将不起作用。
【讨论】: