【发布时间】: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