0
我们大多数实体都具有延迟加载,因为它们不是必需的。 在一个特定场景中,函数需要它们急切地加载,这超出了事务范围。Force急切地加载休眠中的所有依赖
这里的实施
@Transaction
public E getFullyLoadedDetachedEntity(Long id) {
E entity = dao.findById(id);
Hibernate.initialize(entity);
dao.detach(entity);
return entity;
}
的位,但问题是,Entity(E) might have associated entities 'X' which might have 'Y' as lazy loaded.
class E{
X x; //Lazy Load
}
class X{
Y y; //Lazy load
}
现在,Hibernate.initialize(entity) may be loading only it's associated entities(X) but not the associated entites(Y) of X.
如何强行加载所有依赖/懒加载的对象在任何级别。
更新 我想这一次虽然
E entity = dao.findById(id);
Hibernate.initialize(entity);
for (X x : entity.getXList()) {
Hibernate.initialize(x);
}
dao.detach(entity);
我仍然在访问X.getY越来越LazyException()
'同样,Hibernate.initialize(entitity.getX());'会做的那个水平,但如果你低着头这条道路,它不会很长在将几乎整个数据库拉入内存之前 – JamesENL 2014-10-30 07:31:44