hibernate 懒加载失败

来源:互联网 发布:mysql workbench er图 编辑:程序博客网 时间:2024/05/01 02:34
有关懒加载,我也不再介绍。我相信只要用过hibernate都会对它有一定了解。在javaeye上也看到了很多类似的问题。在此我也不用重复。

    如果出现类似错误,首先检查是否在web.xml中配置了如下代码:

Java代码
  1. <filter>      
  2.         <filter-name>opensession</filter-name>      
  3.         <filter-class>      
  4.             org.springframework.orm.hibernate3.support.OpenSessionInViewFilter      
  5.         </filter-class>      
  6.             <init-param>         
  7.             <param-name>singleSession</param-name>         
  8.             <param-value>true</param-value>         
  9.             </init-param>       
  10. </filter>      
  11. <filter-mapping>      
  12.         <filter-name>opensession</filter-name>      
  13.         <url-pattern>/*</url-pattern>      
  14. </filter-mapping>   

  很多人在配置了以上代码,却问题依旧。这样就要做如下分析:

    每次请求,是否已经经过了 OpenSessionInViewFilter 此过滤器。如果没有经过它,那么你的配置实际上是无效的。所以,此配置我建议配置到web.xml中的第一个过滤器中,以免干扰!我越到过很多人问我,问题最终都出在这个地方。特别是加入了strtus以后。很容易出现此类问题例如如下配置:

Java代码
  1. <!-- Struts filter -->   
  2.     <filter>   
  3.         <filter-name>struts2Filter</filter-name>   
  4.         <filterclass>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>   
  5.     </filter>   
  6.     <filter-mapping>   
  7.         <filter-name>struts2Filter</filter-name>   
  8.         <url-pattern>/*</url-pattern>   
  9.     </filter-mapping>  

StrutsPrepareAndExecuteFilter配置一定要在OpenSessionInViewFilter 之后。

原因很简单:StrutsPrepareAndExecuteFilter已经全部拦截,OpenSessionInViewFilter 将会失效!

原创粉丝点击