论坛首页 Java企业应用论坛

Hibernate LazyInitializationException在spring中解决办法

浏览 5711 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-12  
当发生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  
  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企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics