`

解决hibernate could not initial proxy - no Session的方法

阅读更多

   该异常的字面意思就是不能初始化代理,因为这时的session已经被关闭了,也

 

是好多人常说的延迟加载例外问题,主要有以下三种解决方案。。。

 

一、要是在非web开发中可以首先推荐用left join fetch或inner join fetch语

 

法。例如:from Item i left join fetch i.parentItem ii

 

还要如以下的配置:

<many-to-one name="parentItem" lazy="false" fetch="join"        class="cn.sports.matchs.model.Item">
             <column name="PARENT_ID"></column>
</many-to-one>

 

 
另外有一种比较简单,也比较常用的方法就是在<one-to-many>和<many-to-one>

 

中配置lazy="false",但这样会使得在较多数据的是时候给查找效率造成一定影

 

响。要是合适的话,这种方法也可以用在web项目中,但在web项目中最完美的方法

 

应该是在web.xml中配置一个延迟加载的过滤器,代码如下:

<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>/*</url-pattern>
 </filter-mapping>

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics