我发现我的休眠程序奇怪的条件。这里是我的代码休眠 - 未能懒洋洋地初始化 - 没有会话或会话关闭
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