以前写项目的时候 自己用过Hibernate load方法的延时加载 可是产生异常,因为HibernateTemlate执完load方法之后会关闭Session 所以如果要解决对象属性产生异常解决的办法有两种:
***种就是实HibernateCallback接口,并将实例传入给HibernateTempalte的excute里。
Java代码
public User (final Integer id) { User user=(User)hibernateTemplate.excute( new HibernateCallback(){ public Object doInHibernateException,SQLException{ User user=(User)session.load(User.class,id); Hibernate.initialize(user); return user;} } ) public User (final Integer id) { User user=(User)hibernateTemplate.excute( new HibernateCallback(){ public Object doInHibernateException,SQLException{ User user=(User)session.load(User.class,id); Hibernate.initialize(user); return user;} } )
|
另一种方法就是修改xml把lazey改为false
>
【编辑推荐】
- Hibernate常见面试题汇总
- Hibernate入门教程 Hibernate关系映射详解
- Hibernate中Session.find/iterator方法
- 浅谈Struts分页中的Hibernate如何实现