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

     
  • 相关阅读:
    202103226-1 编程作业
    MSF原则
    介绍
    4 20210412-1 原型设计作业
    案例分析作业
    第二次编程
    阅读任务
    自我介绍
    案例分析作业
    阅读任务
  • 原文地址:https://www.cnblogs.com/lindu/p/3216124.html
Copyright © 2011-2022 走看看