永发信息网

错误页面提示“org.hibernate.LazyInitializationEx”是怎么回事?

答案:1  悬赏:70  手机版
解决时间 2021-01-14 22:52
错误页面提示“org.hibernate.LazyInitializationEx”是怎么回事?
最佳答案
错误页面提示

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的方式将该实例变量得到。
解决方法:

方法1.用openSessionInView
方法2.把这个类的延迟加载禁掉

我自己的代码就多了这么一句话:

resultExchangeRatePojo.getDollarRmb();//在它的实例变量DollarRmb的session未关闭前存入,实际上将它载入内存。(我就想在没用关闭session之前用一下就可以把值保存到内存中了)

结果:果然页面上就正常显示了。

总结:原因是hibernate的session已经关闭,集合没有被初始化。在hibernate中:hibernate3 默认支持延迟加载(lazy="proxy"我们可以把proxy看作是true),hibernate2 默认立即加载 (lazy="false")。

在hibernate3中,所有的实体设置文件(user.hbm.xml)中的lazy属性都被默认设成了true,就是当这个类没有被调用时,延时加载,导致了以上情况的发生,在配置文件中将lzay属性设为false就可以了。
原因:
or的lazy属性默认为:lazy = "proxy"
解决: & 中设置 lazy="false"

如果还不行,根据自己需求,经过我的仔细排查放在set一端不行,那就放在那端
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
北京中科视慧科技有限公司怎么样?
深圳手机王子陈金陵 他的故事
下列是分析已变质氢氧化钠溶液的相关实验,其
古代人们管八哥叫什么
A193-B8-2螺栓铬含量不足会影响什么
坟地栽核桃树好吗
找个男朋友都说要找走心的。 走心怎么个走法
不落窠田的意思
从轻方城到北仑滨海开发区坐几路公交
一首歌节奏稍快的歌是什么
SO32-和ClO-是否能共存
车辆去年12月份交的今年17年的保险,因车船税
安卓系统圈点软件文字为什么是手写
宁夏宁东到马连台多远
中国联通(人民路营业厅)(人民路南段中国联通)
推荐资讯
中国象棋规则每走一步加3秒什么意思
我要去轿子雪山自驾游,从昆明出发到转龙镇住
这个哪个明星?
下列装置或操作能达到实验目的是(  )
郑州车牌的车在安阳查不出在郑州的违章且在安
二手笔记本在哪里卖,卖出比较快
套利大咖团队有免费教学套利技术吗?
鸡蛋炒饭隔夜能吃吗
用PC板建一亩温室大棚需要多少钱
死后的法事有什么意义
亚宝路/人民西路(路口)在什么地方啊,我要过
地漏内芯能换吗地漏内漏更换方法及注意事项
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?