我的思路是:
DepartmentBean departmentbean=service.queryDepartmentBean(id);
获取到这个对象
然后传递到这里来删除
service.deleteFromDepartment(departmentbean);
现在有个问题:
service.queryDepartmentBean(id);
最终会调用departmentbean=(DepartmentBean) this.getHibernateTemplate().load(DepartmentBean.class, id);来获取对象
然后,把这个对象传递到
service.deleteFromDepartment(departmentbean);
会调用
this.getHibernateTemplate().delete(DepartmentBean); 从而删除对象
但是,会报错
[ERROR] org.hibernate.LazyInitializationException - illegal access to loading collection
我想主要是
因为departmentbean=(DepartmentBean) this.getHibernateTemplate().load(DepartmentBean.class, id);获取对象成功后,即可关闭连接,从而在调用service.deleteFromDepartment(departmentbean);删除对象的时候,无法加载这个对象的子对象
请问大家是怎么解决这个问题的?

解决方案 »

  1.   

    service.deleteFromDepartment(departmentbean);通过departmentbean里的id重新加载一下然后删除,还有,最好是一个业务一个方法.比如说直接调用hibernate有一个查找的方法,然后是调用service也有一个查找的方法,在删除的时候不要调用service的查找方法,而是调用hiberntae的查找方法.在你这里的deleteFromDepartment()方法就不要调用它,直接调用hiberntae的删除方法