首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate的Session引用锁定有关问题

2012-09-28 
Hibernate的Session引用锁定问题今天遇到一个奇怪的问题:User(用户)类,与Message(短消息)类是一对多的关系

Hibernate的Session引用锁定问题
今天遇到一个奇怪的问题:
User(用户)类,与Message(短消息)类是一对多的关系。
Message代码截取:

public class Message {...@OneToOne(fetch = FetchType.LAZY)@JoinColumn(name = "SENDER_USERID")private UserAccount sender;@OneToOne(fetch = FetchType.LAZY)@JoinColumn(name = "RECEIVER_USERID")private UserAccount receiver;...}


当引用Message类时,会造成无法创建Message类无法创建持久化Session。


问题分析:
当用户登录系统之后,Controller会在HttpSession中创建用户实例,在容器的角度来看,它是一个Transaction级别的对象,用来实时记录、读取用户信息状态。在Hibernate的持久化Session中也会一直存在。

当Message想要初始化Hibernate Session时,会产生HibernateSession无法打开的情况。因为关联关系中定义的:
引用@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SENDER_USERID")
会去session创建User的hibernate session访问。此时,矛盾出现了!
前面提到,User的HibernateSession会出于一直打开的状态,而此时Message要创建对User的关联的话,将无法创建新的HibernateSession。无法返回一个回话,也就会报session is closed的错误。
还是应该对HibernateSession进行深入的研究啊

相关的链接:
http://www.iteye.com/problems/9957
http://wmcoo.iteye.com/blog/486168

热点排行