您的位置:首页 > 其它

Hibernate中懒加载错误的解决方法

2015-01-28 21:03 162 查看
转自http://blog.163.com/huacai9420@126/blog/static/5215854220113266228623/

在集成ssh2三大框架的时候很容易就会造成懒加载异常,通常显示的错误信息是:

org.hibernate.LazyInitializationException: failed to lazily initialize

还有提示说:

no session or session was closed

解决方法:

在web.xml文件中加入一个filter如下:

<filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter>

<filter-mapping>

<filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>

分析原理:

作用是拦截".action“结尾的请求,OpensessionInViewFilter的作用是将session延时关闭。



在action类中会调用service层的方法,然后调用session.一般当session访问结束之后就会将session关闭.

比如我们要得到user的列表,默认情况下是不会将其中的roles的所有信息全部查出来的,最多只给出一个id,或者是name.

但是我们这个时候如果要打印roles的类容,就会报懒加载异常了.因为hibernate根本就没有将role的数据查出来.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: