Nan*_*ale 3 java hibernate spring-mvc java-ee
org.hibernate.LazyInitializationException:无法懒惰地初始化角色集合:pojo.Person.address,没有关闭会话或会话.
我得到这个例外,我正在使用Spring 3.0和Hibernate 3.6.
看起来你有一个名为Person的实体,它有一个延迟加载的映射地址集合?您已加载Person,其加载的会话现已关闭.
会话关闭后,您尝试访问该地址集合,Hibernate尝试加载它们.但是,如果原始会话不再可用,则无法进行此操作.
要访问地址属性,您有以下几种选择:
使用OpenSessionInView模式确保Hibernate会话在请求/响应周期期间保持打开状态(因为您已经标记了Spring MVC,我将假设这是一个基于Web的操作).这实质上将您的Hibernate会话范围限定为HTTP请求.
确保在关闭会话(提交事务)之前加载所有必需的属性.你可以使用
同样,Hibernate.initialize(person.address)
或者编写使用左连接提取的HQL.这可能是这样的:
createQuery("from Person as person left join fetch person.address")
Run Code Online (Sandbox Code Playgroud)
这将仅覆盖此查询的任何延迟加载配置,并确保初始化任何集合.
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |