【问题标题】:How to avoid Hibernate LazyInitializationException with Spring webflow + primefaces and always-redirect-on-pause?如何使用 Spring webflow + primefaces 和 always-redirect-on-pause 避免 Hibernate LazyInitializationException?
【发布时间】:2011-09-16 19:00:39
【问题描述】:

我们在一个大型项目中使用 Spring Webflow 2.3 + Primefaces 2.2 + Hibernate。我们希望启用 always-redirect-on-pause 以便后退按钮和刷新正常工作。我们还想使用惰性 OneToMany 集合来避免性能问题。

但我们不能让它一起工作。如果我们同时启用(集合上的延迟加载和流上的暂停时重定向),我们会在 primefaces 表上显示集合时得到 org.hibernate.LazyInitializationException。

如果我们禁用暂停时重定向,它会正常工作,所以我猜问题是 JSF 视图是在 GET 请求之后呈现的,并且没有重新附加 Hibernate 会话。如果禁用重定向时暂停,则在第一个 POST 请求后完成表的呈现,休眠会话在那里并且一切正常。

如果我是对的,这种组合(SWF + JSF2 + Hibernate)永远不会像我预期的那样工作......

你有类似的经历吗?

【问题讨论】:

  • 你在使用 OpenSessionInView 吗?
  • 我们正在使用 OpenSessionInView。在 POST 请求之后呈现页面时,它可以正常工作。但是,如果我启用 always-redirect-on-pause 页面在 GET 请求之后呈现,我得到 LazyInitializationException。我们正在使用一个危险的解决方法:我们在渲染页面之前执行 hibernate.merge() ()。它有效,但我担心不良副作用......

标签: hibernate jsf spring-webflow


【解决方案1】:

可以参考Spring Web Flow Reference Guide的“FlowScoped PersistenceContext”章节7.2

希望对你有用。

【讨论】:

  • 虽然我们的业务逻辑不能很好地适应提交或回滚流程,但我们已经尝试启用持久上下文作为概念证明。不幸的是,redirect-on-pause 和 LazyInitializationException 的问题并没有消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 2013-01-09
  • 2014-07-11
相关资源
最近更新 更多