休眠查询语言 (HQL) - 延迟/无延迟加载查询



我有一个这样的结构:

  • A 包含 B 的集合(映射为非懒惰)
  • B 包含 C 的集合(映射为非懒惰)

我想进行一个查询,检索 A 对象,其中包含 B 对象,其中没有 C 对象。这可能吗?相反的方法也适用于我(如果 B-C 关系映射为懒惰并且查询检索包含 B 和 C的 A)。

谢谢!

不,这是不可能的。由于您将关联本身标记为急切加载,因此 Hibernate 将始终急切加载此关联。

如果将关联标记为惰性(toMany 关联的默认值),则可以选择在查询中急切地获取它们,使用 join fetch

select a from A a left join fetch a.bs b left join fetch b.cs

请注意,如果两个集合都是包(即没有索引列的列表),这将不起作用。

最新更新