spring+hibernate一个困扰几天的问题?
goal_ 2007-09-03 05:56:21 我的一个bean有个如下的方法
public void add(Student stu,Integer cid) throws Exception{
dao.add(stu,cid);
dao.update();
Collection data = dao.get();
if(data.size()==3){
throw new AddException("未查寻到信息");
}
}
add里有三个操作,添加,更新,查询.我的DAO实现如下:
import org.apache.log4j.Logger;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import pojo.Clazz;
import pojo.Student;
public class ViewDaoImpl extends HibernateDaoSupport implements ViewDao {
protected Logger log = (Logger)Logger.getInstance("spring.logs");
private HibernateTemplate temp;
private HibernateTemplate getInstance(){
if(temp == null)
temp = getHibernateTemplate();
return temp;
}
public Collection get() {
Collection coll = getInstance().find("from pojo.Clazz");
log.debug("查询到的班级有:" + coll.size());
return coll;
}
public void add(Student stu,Integer cid){
Clazz cdata = (Clazz)temp.load(Clazz.class,cid);
stu.setClazz(cdata);
temp.save(stu);
}
public void update(){
getInstance();
if(temp == null)
if(log.isDebugEnabled()){
log.debug("===============得不到seesion的值=========");
}
Student stu = (Student)temp.load(Student.class,new Integer(18));
stu.setName("work");
temp.save(stu);
}
public void del(Student stu){
getInstance();
temp.delete(stu);
}
现在的问题是:
可以查询和添加,就是在更新的时候报错,错误信息如下
[16:57 09/03 ERROR org.hibernate.LazyInitializationException] - could not initialize proxy - the owning Session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:53)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
at pojo.Student$$EnhancerByCGLIB$$19d7692e.setName(<generated>)
at dao.ViewDaoImpl.update(ViewDaoImpl.java:38)
at bean.ViewBean.add(ViewBean.java:16)
at controll.ViewControll.add(ViewControll.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)