【发布时间】:2014-09-29 01:02:52
【问题描述】:
我有一个常见的父子关系,例如:
class Parent {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
List<ChildOne> childrenOne;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
List<ChildTwo> childrenTwo;
@OneToMany
List<LazyChild> lazyChildren;
@Id
Long id;
}
然后我有 HQL 查询,如:
select lazyChild from Parent p
join p.lazyChildren lazyChild
where p.id = ? and lazyChild.mnemonic='AAA'
当我执行它时,我得到了 LazyChild 对象,这就是我想要的。但是hibernate也会初始化所有急切定义的集合,这是我不想要的。 hibernate 单独调用来获取热切的关联并不直观。我通过切换到显示 SQL 查询来看到它。
如何避免不必要的 SQL 调用?
【问题讨论】: