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