我發現我的休眠程序奇怪的條件。這裏是我的代碼休眠 - 未能懶洋洋地初始化 - 沒有會話或會話關閉
public Set<AnotherClass> getAnotherClassSetsFromSomeClass() {
Session session = HIbernateUtil.getSessionFactory().openSession();
Transaction trans = session.beginTransaction();
SomeClass sc = (SomeClass)session.get(SomeClass.class,"classId");
trans.commit();
session.close;
return sc.getAnotherClassSet();
}
這段代碼看起來很好,如果我在Java控制檯上運行它。
,如果我用它一個Web應用程序(JSF),我得到這個錯誤
未能懶洋洋地初始化 - 沒有會話或會話關閉
它具有一對多的關係(一個SomeClass有許多其他類)
指向的異常消息返回sc.getAnotherClassSet()
作爲空指針。我敢肯定,我的數據庫中有這些數據。
那麼我發現,如果我加System.out.println(sc.getAnotherClassSet())
berfore return sc.getAnotherClassSet()
我的代碼工作正常。
任何想法發生了什麼?謝謝。
這是答案,而是調用getter或setter,最好對某個函數使用class屬性,如getAnotherClassSet()。size(),並將其加載到SomeClass中的AnotherClassSet。謝謝 –
是的,加載'AnotherClassSet'關聯('SomeClass')是我試圖在我的答案的最後一段中提出的建議;-) – Crferreira