错处页面揭示
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
- 2236 - ORA-00988:missing or invalid password(s)
- 2237 - ORA-00904
- 2238 - 错误6无法将类型
- 2239 - System.ObjectDisposedException: 无法访问已释放的对象。
- 2240 - ORA-01119: 创建数据库文件时出错
- 2241 - The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type
- 2242 - Linq ToList出错
- 2243 - Gireview绑定LINQ出错
- 2244 - 无法删除尚未附加的实体
- 2245 - SubmitChanges
- 2246 - pls-00103错误
- 2247 - LINQ并发问题
- 2248 - 查询包含对不同数据上下文上所定义项的引用
- 2249 - Linq报错LinqPad正常
- 2250 - Cannot add an entity with a key that is already in use
- 2251 - linq中参数超过10以后会报错
- 2252 - linq to sql 的实体如何序列
- 2253 - ORA-01033 ORACLE initialization or shutdown in progress
- 2254 - ORA-01779: cannot modify a column which maps to a non key-preserved table
- 2255 - error C3861