Hibernate中报session was closed是什么问题啊

来源:百度知道 编辑:UC知道 时间:2024/07/06 22:08:00
Hibernate中,我建了一个主外键的关系,我通过主表可以查询出从表的数据,但是我通过从表就不能查出主表的数据,为什么啊?

lazyInit的问题。
也就是说,你在操作:
从表.get主表对象();这个方法的时候
你的session是关闭状态,所以hibernate不能通过懒汉查询来实例化主表对象

懒汉查询:hibernate在查询相关联的表内容时候,比如你先session.get主表(Int id);
这样得到了主表的信息,但是在这个主表对象里面有个从表集合Set<从表>;这个从表集合是不会被hibernate默认查询出来的,因为考虑到效率问题,有时候你并不需要从表集合的数据!所以hibernate提供了懒汉lazyInit来执行从表数据的查询。然而往往我们做的时候都以为从表集合是一同在主表对象里面的,所以就用 主表.get从表集合();来得到从表,从对象方面来看确实没问题,但是hibernate这个时候需要再到数据库去查一次从表,然后它发现编程人员已经把session close了。于是hibernate报session was closed错误

配置文件不对,你可以参考一本书<<深入浅出Hibernate>>中关于主外键的关系的配置文件的写法.这本书再网上一搜就能找到.

session被关闭啊!你在执行操作的时候确认他是打开的????有没有单步调试

延迟装载的问题.在网上找下相关资料很快可以解决.