【问题标题】:Sudden "failed to lazily initialize a collection of role...:no session or session was closed" - Exception突然“未能延迟初始化角色集合...:没有会话或会话已关闭” - 异常
【发布时间】:2011-07-18 04:24:36
【问题描述】:

在一个运行了相当长一段时间而没有任何更改的应用程序中,我得到了异常

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

突然之间,可能的原因是什么?发生这种情况的方法在过去 3 年中经过测试并成功使用。

感谢您的帮助, 人

附:环境:JSP、Spring、Hibernate、MySQL

【问题讨论】:

  • 请您提供更多信息,例如类结构是什么以及异常的堆栈跟踪是什么样的?
  • 你一定改变了哥们!

标签: java mysql hibernate spring jsp


【解决方案1】:

尝试使用 web.xml 中的 Open Session In View 设置。如果您尝试将休眠对象发送到 Spring MVC 视图并将其带回,这将有所帮助。

两个选项。

  • 在关闭休眠会话之前加载所有惰性集合 或
  • 在 web.xml 中使用 OpenSession In View 设置

【讨论】:

    【解决方案2】:

    如果您传递一个实体并最终离开读取它的事务边界,您将无法访问任何尚未初始化的关联(我猜您的关联类似于Collection<Role> roles)。如果您随后访问 roles Hibernate 可能会尝试初始化它,但由于事务(以及与它的 Hibernate 会话)已经关闭,您会遇到该异常。

    发生这种情况的方法在过去 3 年中经过测试并成功使用。

    这可能意味着调用该方法时集合未初始化的情况很少见,并且在过去 3 年内没有发生过。

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 2011-03-31
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 2015-09-13
      • 2015-01-26
      相关资源
      最近更新 更多