Hibernate延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用)

Hibernate延迟加载 或 no session or session was closed 问题的解决(OpenSessionInViewFilter使用)

 

在Hibernate配置文件中配置many-to-one 或者 one-to-many 等情况时.设置lazy="true"时 在查询对结果操作时会出现以上情况.将lazy="true" 改为 lazy="false" 可以解决问题.但那就脱离了延迟加载.
实现延迟加载的解决办法由很多.我采用了比较简单的方法:
      使用:OpenSessionInViewFilter
           在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>

    
(以上代码struts2.0据说需要在web.xml中作为第一个filter,即所有filter的上面。位置不对可能不起作用)
    如果你是通过struts配置文件中以 ContextLoaderPlugIn插件 认识spring配置文件的话,那么 OpenSessionInViewFilter 加载的spring配置文件极可能与插件加载的不是同一个对象.因为他们的key值不一样.解决办法是删除、注释掉struts配置文件中的ContextLoaderPlugIn。在web.xml中认识:

     web.xml 中添加:
  

   <listener>
     <listener-class>
        org.springframework.web.context.ContextLoaderListener
     </listener-class>
   </listener>

  
以上代码可解决:No WebApplicationContext found: no ContextLoaderListener registered异常


  
它回去查找默认文件名为applicationContext.xml的文件,如果你的名字不一样 需要显示配置该文件。以上工作完成后即可实现,Hibernate延迟加载。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值