Hibernate查询语言(HQL) - 对延迟/无延迟加载的查询

时间:2012-05-14 13:00:32

标签: hibernate hql

我有这样的结构:

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

我想创建一个查询,它检索包含B对象的A对象,而不包含C对象。那可能吗?另一种方式也适用于我(如果B-C关系被映射为惰性且查询检索A,包含B和C)。

谢谢!

1 个答案:

答案 0 :(得分:8)

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

如果您将关联标记为延迟(toMany关联的默认关联),那么您可以选择使用join fetch在查询中急切地获取它们:

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

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