在 Alfresco 3 上刷新页面时出现 LazyInit 异常(Hibernate 3 + Spring)

LazyInit Exception when Refreshing a page on Alfresco 3 (Hibernate 3 + Spring)

我在 Alfresco(第 3 版,使用 hibernate 3 + spring)的特定层上遇到了以下问题:

首次加载页面时,一切正常。没问题。

当我们在此页面上进行导致刷新的交互时,我们有一些 lazyinitializationexception could not initialize proxy - no session.

我知道 lazyinit 是一个常见问题。但由于我们只想在特定图层上进行更改,而不是在露天图层上进行更改,因此无法应用许多分辨率。

强制会话保持打开状态对我们来说是不可能的。

使用Hibernate.Initialize的那个会导致这个错误:

User:admin ERROR [org.hibernate.LazyInitializationException] failed to lazily initialize a collection of role: org.jbpm.taskmgmt.exe.TaskInstance.variableInstances, no session or session was closed

所以我得到了三个问题:

  1. 有人知道为什么在第一次加载时我们没有问题,而在刷新时却出现 lazyInit 异常吗?
  2. 我们怎样才能让 hibernate.initialize 发挥作用?
  3. 还有其他方法可以解决这个问题吗?

再多说一点上下文: 我们想通过 IHM 向用户显示任务历史记录。为此,我们填充一个 table,为此我们收集当前的 taskInstance ti 和之前的任务实例,并为它们中的每一个执行 ti.GetName()ti.GetDescription() 等。这个问题似乎来吧,在收集完Task Instances后,hibernate session关闭了,所以我们无法对ti进行ti.GetName()等操作。

预先感谢大家的帮助, 此致

好的,经过很多天的努力,我们终于找到了解决方法。刚好在我写的绝望的时候同事解决了post :)

所以解决方案是使用

getHibernateTemplate().Hibernate.Initialize(ti.GetName());

直接在 DAO 的回调部分 class。

希望它对其他人有用,感谢您的帮助,我总是不确定我是否应该 post 代码以保持 post 简单。