org.hibernate.LazyInitializationException: failed to lazily initialize

来源:互联网 发布:mysql 获取上一年月份 编辑:程序博客网 时间:2024/05/18 22:12

最近在用ssh框架开发时出现这个问题:org.hibernate.LazyInitializationException: failed to lazily initialize

原因很简单,是在非法的session中去调用lazy=“true“的属性,

网上资料蛮多的,解决方法有两个

1,把lazy=”false“

2,在web.xml中加入:(在structs的过滤器之前)、

<filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping><!-- 加入上面这些 --><filter>         <filter-name>struts2</filter-name>          <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>

第一种方法,就是设置为不要用lazy加载元素,这样做,虽然可以解决上面这个问题,但是会产生一些不必要的开销。比较复杂的对象对应关系,或者数据量比较大的时候,不推荐这么做
第二种方法,就是避免session关闭过早导致出现这样的异常,这样的方法以前也是使用过,而且一般情况下filter过滤链接都会做。
但是以上这两种方法,在解决小规模的数据时 ,还凑活能用,但是在大量数据时 ,就会产生大量的耗时。
有lazy加载的对象时,千万不能用=这个操作,不然必报这个exception

阅读全文
0 0