关闭

could not initialize proxy - no Session

256人阅读 评论(0) 收藏 举报
分类:
今天写一个小项目的时候,遇到了标题所示问题,could not initialize proxy - no Session,刚开始没有太在意,以为是方法使用错了,于是更改了一个方法,还是一样的问题,我知道肯定是hibernate哪边的配置写错了,检查了一遍,没发现,看来自己水平不够啊,只能求助GOOGLE大神了,于是搜到了下面的解决办法,轻松搞定,和大家分享下吧。
    在<many-to-on>中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了。
    简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session早已经在dao中就关闭了,我们该如何解决这种异常呢?
    简单的说有三种:
    1.把lazy设成false,最2的办法,但是最简单,简单就是美嘛,也依然会有很多再使用这个方式再解决类似问题。
    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语法。
    例如:from Item i left join fetch i.parentItem ii
    解释一下Item表是一个自关联的表,它的关联关系在hbm.xml中配置好了。
    如下:
    程序代码
    <many-to-one name="parentItem" lazy="false" fetch="join" class="cn.sports.matchs.model.Item">
    <column name="PARENT_ID"></column>
    </many-to-one>
    在Item类中
    程序代码
    private Item parentItem;
    利用left join fetch可以完美的解决这个问题。
    希望能帮你解决困难,那样我就知足了。
    下面转一篇不错的文章,也是讲could not initialize proxy - no Session问题的!
    Could not initialize proxy - the owning Session was closed!
    很多地方都已经着名解决方案了,为了说明问题再重写一遍!
    但就此说一下关于lazy机制:
    延迟初始化错误是运用Hibernate开发项目时最常见的错误。如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它。如果在游离状态时才初始化它,就会产生延迟初始化错误。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

解决Quartz定时器中查询懒加载数据no session的问题

相信大家在web开发过程中一定遇到过一种情况,Class班级类一对多关联一个Student学生类,所以为了性能考虑,配置一个lazy-init=true,然后在前台页面需要访问懒加载数据时需要额外配置...
  • u013815546
  • u013815546
  • 2016-11-04 10:30
  • 2146

fastjson序列化hibernate代理和延迟加载对象出现no session异常的解决办法

原文  http://blog.csdn.net/skmbw/article/details/12650827 fastjson序列化hibernate代理和延迟加载对象出现org.hibe...
  • yiluoAK_47
  • yiluoAK_47
  • 2014-04-08 18:22
  • 4430

fastjson序列化hibernate代理和延迟加载对象出现no session异常的解决办法

fastjson序列化hibernate代理和延迟加载对象出现org.hibernate.LazyInitializationException: failed to lazily initializ...
  • skmbw
  • skmbw
  • 2013-10-12 14:07
  • 3071

could not initialize proxy - no Session:解决懒加载(排除不需要查询显示的属性)

could not initialize proxy - no Session解决方法细解
  • LiPengBo666
  • LiPengBo666
  • 2017-12-29 19:20
  • 52

hibernate3中出现 could not initialize proxy - no Session 错误的解决办法以及lazy load的介绍

could not initialize proxy - no Session 异常: org.hibernate.LazyInitializationException: could not...
  • pk490525
  • pk490525
  • 2012-01-05 19:49
  • 725

EJB项目出现“org.hibernate.LazyInitializationException: could not initialize proxy - no Session”异常解决

环境 JBoss 6.0 + MyEclipse 8.6 + MySQL 5.1 + Struts 2.3 + EJB 3.0   问题 两张表存在多对一的关系,数据不能正常显示,当执行查询时出现如下...
  • Wentasy
  • Wentasy
  • 2013-01-06 15:28
  • 2331

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

在中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了。 简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的...
  • a657282694
  • a657282694
  • 2014-04-20 00:21
  • 505

关于使用hibernate出现org.hibernate.LazyInitializationException: could not initialize proxy - no Session错误

hibernate3中出现 could not initialize proxy - no Session 错误的解决办法以及lazy load的介绍 could not initialize pro...
  • jiangwayne
  • jiangwayne
  • 2015-11-14 16:32
  • 2010

Hibernate3 错误: could not initialize proxy - no Session

Hibernate3 错误: could not initialize proxy - no Session 异常:org.hibernate.LazyInitializationException:...
  • chengc017
  • chengc017
  • 2011-06-07 21:01
  • 510

could not initialize proxy - no Session解决办法

could not initialize proxy - no Session错误报错出现情况使用struts+hibernate+springMVC时,使用标准查询Criteria进行联级查询抛出此...
  • m0_37893932
  • m0_37893932
  • 2017-04-21 14:03
  • 239
    个人资料
    • 访问:282584次
    • 积分:6007
    • 等级:
    • 排名:第4910名
    • 原创:324篇
    • 转载:51篇
    • 译文:0篇
    • 评论:53条
    博客专栏