懒加载异常org.hibernate.LazyInitializationException: could not initialize proxy - no 详解

错处页面揭示

could not initialize proxy - no Session

控制台

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

病征:这是一个lazy施用后的Exception,施用迟时加载,在session(hibernate里的session),封锁后施用该对象的未加载变量,且不说session已经封锁,没保留到内存储器中,其后你运用了,以致该异常。


Q:我以get失去一个对象,在JSP页面以EL表述它的范例变量时,也抛出了该异常,在application的测试时却没有出现。
A:推测可能是该范例变量是hibernate进展加载的,或许hibernate自身是以load的形式将该范例变量失去。
解决方法:

步骤一 .用openSessionInView
步骤2. 把这个种的推延加载禁掉

list=query.list();for (Object object : list)
Hibernate.initialize(((Deliver)object).getPlnbill());//Deliver是复合对象,有属性引述于PlnBill

OR

resultExchangeRatePojo.getDollarRmb();//在它的范例变量DollarRmb的session未封闭前惠存,实质上将它载入内存储器。(我就想在没用封闭session事前用一下就可以把值保留到内存储器中了)

结果:果真页面上就一般展示了。


小结:原因是hibernate的session已经封锁,会合没被初始化。在hibernate中:hibernate三 默许支持推迟加载(lazy="proxy"我们可以把proxy看做是true),hibernate二 默许马上加载(lazy="false")。

在hibernate3中,全部的实业设立资料(user.hbm.xml)中的lazy属性都被默许设成了true,便是应这个类没被调用时,延时加载,以致了之上状况的发作,在配置文件中将lzay属性设为false就可以了。

----------------------------------------------------------------

缘故 :
or 的 lazy 属性默许为 :lazy = "proxy"
解决 : & 中设立 lazy="false"


如其还不行,依据自个儿需求,透过我的认认真真排查放在set一边不行,那就放在那端

本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值