论坛首页 Java版

Hibernate LazyInitializationException在spring中解决办法

浏览 2454 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-02-01 关键字: spring hibernate
当发生LazyInitializationException时,需要使用Hibernate.initlize,但在spring的 HibernateDAOSupport中取出的对象,进行Hibernate.initlize时会被告知,session已经关闭。只能在 Spring封装的Hibernate操作内部进行。



java 代码
  1. return (MyEntity)getHibernateTemplate().execute(    
  2.    new HibernateCallback(){    
  3.       Object doInHibernate(Session session){   
  4.          MyEntity entiy = (MyEntity)session.load(MyEntity.class,id);  
  5.          Hibernate.initlize(entity.getMySub());  
  6.          return entity;  
  7.       }    
  8.    }    
  9. ); 
   
最后更新时间:2007-03-17
我想似乎你可以关注一下:
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

呵呵,此方法仍然会有一些问题,但已经是此问题比较好的解决方案了。
   
0 请登录后投票
最后更新时间:2007-03-18
:D thanks
   
0 请登录后投票
最后更新时间:2007-03-18
Hibernate.initlize
使用这个会是代码和hibernate绑定在一起
   
0 请登录后投票
最后更新时间:2007-03-18
用这个无非就是想得通过延迟加载的集合嘛,直接调用集合对象的size()方法,就可以了
   
0 请登录后投票
最后更新时间:2007-03-18
maping的时候,设置lazy=false就可以了。
另外Hibernate.initlize(entity.getMySub());最好放到Service这层来做,不同的Service的方法,不是都需要Hibernate.initlize(entity.getMySub());
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐