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)

...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
e3002 2007-09-05
  • 打赏
  • 举报
回复
顶一下
goal_ 2007-09-05
  • 打赏
  • 举报
回复
感觉论坛好象不是很活跃啊???
goal_ 2007-09-04
  • 打赏
  • 举报
回复
楼上,我的添加,更新,查询这三个我都有调用getHibernateTemplate()方法啊?他们之间有什么联系吗?他们不是独立的吗?怎么我的更新会受到添加的影响呢?
yao_ran 2007-09-03
  • 打赏
  • 举报
回复
你的spring的xml事务配置有问题,spring默认的事务是在调用了getHibernateTemplate()后就关闭session

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧