1

I need to do forEach over lazy collection in jsp from spring controller. But this invocation crashes because session was closed in controller. I solve this by loding collection via: Hibernate.initialize(obj.getCollection()) Is it possible to tune mvc to have hibernate session inside jsp?

Thanx

4

1 回答 1

4

但是此调用崩溃,因为会话在控制器中关闭

我假设崩溃是指您在会话关闭后通过访问映射集合导致了 LazyInitializationException。

调整 mvc 以在 JSP 中拥有 Hibernate 会话本质上意味着您希望在 HTTP 请求期间保持会话打开。这意味着在渲染时您仍然可以加载所需的数据。

您可以使用视图模式中的打开会话来实现此目的。在 Spring 中,这是使用 OpenSessionInViewFilter 实现的。有关设置的更多详细信息,请参阅此答案。

您已经演示过的替代方法是在加载父项的事务中加载您需要的数据。这就是 Hibernate 支持延迟加载的原因。有时您需要加载子实体和集合,但有时您不需要。通过将其映射为惰性,您可以根据特定的交互进行选择。

于 2013-06-30T13:52:01.043 回答