could not initialize proxy - no Session 【转自yesuziwen 和redstarofsleep 的 的答案】

本文探讨了在使用Hibernate框架时遇到的LazyInitializationException错误的原因,并提供了三种解决方案以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2011-10-31

 

Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
 at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)
 at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
 at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
 at com.sinovatech.bms.adm.model.dto.TBmsUserDTO_$$_javassist_40.getUserLoginName(TBmsUserDTO_$$_javassist_40.java)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
 ... 50 more

原因:

在hibernate3的 many-to-one的默认选项是 lazy = "proxy"

 

session已经关闭了,设置延迟加载到真真读取数据时才读数据库,但是此时数据库连接已经关闭了

 

解决方案

 

1 <many-to-one>  & <set> 中设置 lazy="false"
(设置lazy="false" 解决了大部分的延时加载问题
但是同事也降低了系统的性能 )  【成功】


2 将many-to-one部分的fetch设置为"join" 【失败】

3 OpenSessionInViewFilter (用SESSION的关闭延迟到请求结束,大部份的WEB应用都用这个解决) 【未测试】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值