【问题标题】:How to access lazy hibernate collections from jsp foreach in spring?java - 如何在春季从jsp foreach访问惰性休眠集合?
【发布时间】:2013-06-30 13:33:08
【问题描述】:

我需要在来自 spring 控制器的 jsp 中对惰性集合执行 forEach。但是这个调用崩溃了,因为会话在控制器中关闭了。我通过以下方式收集收集来解决这个问题: Hibernate.initialize(obj.getCollection()) 是否可以调整 mvc 以在 jsp 中进行休眠会话?

感谢

【问题讨论】:

    标签: spring hibernate jsp spring-mvc


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 如果您使用 OpenSessionInViewPattern 引用完整的代码示例,我会接受您的回答。谢谢。
    • 我已链接到具有所需更改的另一个答案。这也是一个问答网站。不是要求完整代码示例的站点。我已经为你指出了正确的方向,现在你需要去研究如何完成它。这不是一个新问题,实际上有成千上万的人问过同样的问题,所以我猜想必须有很多“完整的代码示例”供想要复制和粘贴的人使用。
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多