2009-08-21 42 views
0

我在Hibernate中有一个非常好奇的问题,我想提出一些意见。在我的代码,如果我做到以下几点:休眠异常通过Alt + Tab修复

  • 转到页一
  • 点击网页A上的链接将要采取的网页B
  • 点击数据项目第B
  • 抛出异常

我得到一个错误,告诉我:

failed to lazily initialize a collection of role: XYZ, no session or session was closed 

辉够了。但是,当我做同样的事情,但在中间添加一个ALT +标签,一切都很好。例如。

  • 转到页一
  • 点击网页A上的链接将要采取的网页B
  • 按下Alt + Tab切换到另一个应用程序
  • 按下Alt + Tab切换回web浏览器
  • 点击页面B上的数据项目
  • 一切都很好。

我有点困惑,关于如何从我的应用程序切换焦点使其按照我的意图行事。有没有人有任何光线照耀这个问题?我不认为这是一个锁定问题,因为即使我比第一组更快地完成第二组步骤,仍然没有错误。

这是一个Seam应用程序使用Hibernate 3.3.2.GA & 3.4.0.GA.

+0

据我所知,聚焦没有任何改变。我唯一改变的是将下列内容添加到页面上的表中: 最后登录日期 的 而且调用的函数只对我以前使用过的DB进行过定期查询 – 2009-08-21 15:37:59

回答

0

这与切换应用程序没有什么关系。也许你的浏览器在焦点丢失/获得时更新了一些东西

原因您的问题是这样的:

  1. 在第一个请求,你装​​载对象和存储在会话中。该对象包含某种类型的集合。

  2. 在接下来的请求中,您尝试对收集进行一些操作,但您忘记先致电session.refresh(object)

会发生什么情况是会话在第一个请求完成时自动关闭。但是对象中的备份集合仍然包含对它的引用(以便它可以在第一次访问时自动加载)。

0

你使用的是JavaScript吗?当您切换回浏览器以某种方式清除不良状态时,也许事件正在触发?

0

您的页面是否完成渲染?我发现有时当我得到错误时,而不是显示错误,服务器只是退出生产输出。它会将错误输出到日志中,但那是关于它的。我结束了一半的完成页面。查看源代码并查看是否到达主体的末端,或许您的切换导致服务器变得懒惰,或者您的浏览器在出现错误时提前终止连接

0

我的建议是进行单元测试以查看如果你可以在浏览器中隔离其他环境中重现错误;)