zoukankan      html  css  js  c++  java
  • 懒加载异常:org.hibernate.LazyInitializationException: could not initialize proxy

    病症:这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。

    简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session早已经在dao中就关闭了,我们该如何解决这种异常呢?


    解决方法有三种:
    1.把lazy设成false,最简单,但是效率降低。

    2.在web.xml中加入如下

    程序代码:
    <filter> 
         <filter-name>hibernateFilter</filter-name> 
         <filter-class> 
         org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 
         </filter-class> 
    </filter>
    <filter-mapping> 
         <filter-name>hibernateFilter</filter-name> 
         <url-pattern>*.do</url-pattern> 
    </filter-mapping>


    3用 left join fetch 或 inner join fetch 语法:
    例如:select distinct t from Tuser t left join fetch t.troles role where t.id = :id

     
  • 相关阅读:
    SQL Server死锁产生原因及解决办法
    SqlServer表死锁的解决方法
    SQL Server中解决死锁的新方法介绍
    SQL Server 中WITH (NOLOCK)浅析
    二分图匹配
    java list三种遍历方法性能比较
    CSharp Algorithm
    存几个html画图的网站
    [HDU 1358]Period[kmp求周期]
    Android解析Excel文档完整示例
  • 原文地址:https://www.cnblogs.com/lindu/p/3216124.html
Copyright © 2011-2022 走看看