Java Alt+修复了休眠异常;标签

Java Alt+修复了休眠异常;标签,java,hibernate,Java,Hibernate,我在Hibernate中遇到了一个非常奇怪的问题,我想听听大家的意见。在我的代码中,如果我执行以下操作: 转到A页 单击a页上的链接可转到B页 单击B页上的数据项 抛出异常 我得到一个错误,告诉我: failed to lazily initialize a collection of role: XYZ, no session or session was closed 很公平。但是当我做同样的事情,但是在中间添加一个ALT+标签,一切都很好。例如 转到A页 单击a页上的链接可转到B页

我在Hibernate中遇到了一个非常奇怪的问题,我想听听大家的意见。在我的代码中,如果我执行以下操作:

  • 转到A页
  • 单击a页上的链接可转到B页
  • 单击B页上的数据项
  • 抛出异常
我得到一个错误,告诉我:

failed to lazily initialize a collection of role: XYZ, no session or session was closed
很公平。但是当我做同样的事情,但是在中间添加一个ALT+标签,一切都很好。例如

  • 转到A页
  • 单击a页上的链接可转到B页
  • 点击ALt+Tab切换到其他应用程序
  • 点击ALt+Tab切换回web浏览器
  • 单击B页上的数据项
  • 一切都很好
我有点困惑,从我的应用程序中切换焦点是如何使它按我所希望的方式运行的。有人有光线照射这个物体吗?我不认为这是一个锁定问题,因为即使我执行第二组步骤比第一组步骤快,仍然没有错误


这是一个使用Hibernate 3.3.2.GA和3.4.0.GA的Seam应用程序。

您使用的是javascript吗?当您切换回浏览器时,可能会触发一个事件,以某种方式清除坏状态?

这与切换应用程序无关;也许你的浏览器在焦点丢失/获得期间更新了一些内容

您的问题的原因是:

  • 在第一个请求中,加载一个对象并将其存储在会话中。此对象包含某种类型的集合

  • 在下一个请求中,您尝试对集合执行某些操作,但忘记首先调用
    会话。刷新(对象)


  • 当第一个请求完成时,会话会自动关闭。但是对象中的备份集合仍然包含对它的引用(这样,当您第一次访问它时,它可以自动加载)。

    您的页面是否完成了它的呈现?我发现,有时当我收到错误时,服务器不显示错误,而只是停止生成输出。它将错误输出到日志,但仅此而已。最后,我完成了一半的页面。查看源代码并查看是否到达正文的末尾,可能是您的切换导致服务器变懒,或者是您的浏览器在错误发生时过早终止连接

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

    据我所知,聚焦方面没有任何变化。我唯一更改的是将以下内容添加到页面上的表中:Last Login Date和调用的函数只是对我以前经常使用的数据库执行常规查询