gpt4 book ai didi

java - org.hibernate.lazy 初始化异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:52 26 4
gpt4 key购买 nike

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: pojo.Person.address, no session or session was closed.

我遇到了这个异常,我正在使用 Spring 3.0 和 Hibernate 3.6。

最佳答案

看起来你有一个名为 Person 的实体,它有一个延迟加载的地址映射集合?您已经加载了 Person,并且加载它的 session 现在已经关闭。

session 关闭后,您尝试访问该地址集合,Hibernate 尝试加载它们。但是,如果原始 session 不再可用,这是不可能的。

为了访问地址属性,您有几个选择:

  1. 使用 OpenSessionInView 模式确保 Hibernate session 在请求/响应周期期间保持打开状态(因为您已经标记了 Spring MVC,所以我假设这是一个基于 Web 的操作)。这实质上将您的 Hibernate session 范围限定为 HTTP 请求。

  2. 确保在 session 关闭(事务提交)之前加载所有必需的属性。你可以使用

    Hibernate.initialize(person.address)

或者通过编写使用左连接提取的 HQL。这可能是这样的:

createQuery("from Person as person left join fetch person.address")

这将仅覆盖此查询的任何延迟加载配置,并确保初始化任何集合。

关于java - org.hibernate.lazy 初始化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8292820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com