我工作的一个Grails web应用程序Hibernate的Session范围错误
该应用程序是一个非常缓慢的网络上运行,并且正在运行的IE 6,又老又慢客户端PC的访问的数据库连接是非常慢,数据库已结束工作。所以最小化数据库调用和数据传递是一个优先事项
我知道使用会话范围并不是最佳实践。在这种情况下,我认为这将是最好的。考虑到我的所有网页需要相同的对象,而这将让他们在
获取很多次,我把我的对象在会话范围session.obj = obj
它正常工作与一个问题 由于该系统是如此在网页链接(控制器/操作)上减慢多次点击是可能的。
当发生这种情况我在一些情况下,得到一个错误 org.hibernate.HibernateException:非法尝试集合有两个打开的会话
这个代码
if (!obj?.isAttached()) {
obj?.attach()
}
我有发生的错误关联将对象附加到休眠会话,所以我可以懒加载相关的对象 我不想急于获取(可能是解决方案) 我似乎错误是当对象被连接多次时引起的。这种情况似乎并没有阻止这个问题。这是一种竞赛状态吗?
我只是想知道如果任何人有一个解决这个问题,或者知道原因
谢谢