Hibernate3提示Session is closed


public void save(ScClassSort instance) {
log.debug("saving ScClassSort instance");

Session session = null;
Transaction tx = null;



try {
session = getSession();
tx = session.beginTransaction();

if (instance.getParentId()!=0)
{
//这个分支出错!
ScClassSort parent = findById(instance.getParentId());

instance.setChild(0);
instance.setDepth(parent.getDepth()+1);
instance.setParentDir(parent.getParentDir()+parent.getDir()+"/");
instance.setParentPath(parent.getParentPath()+","+parent.getId());
System.out.println(instance);
session.save(instance);

parent.setChild(parent.getChild()+1);
System.out.println(parent);
session.update(parent);
}
else
{
//这个分支不出错!
instance.setChild(0);
instance.setDepth(0);
instance.setParentDir("/");
instance.setParentPath("0");
System.out.println(instance);
session.save(instance);
}

tx.commit();
log.debug("save successful");
} catch (RuntimeException re) {
if(tx!=null)
{
tx.rollback();
}

log.error("save failed", re);
throw re;
}
finally
{
//session.close();
}
}

我把session.close()不注释的时候提示Session is already closed,估计是session.commit()的时候自动关闭了,但是注释了的话还是出错,
不过奇怪的是如果执行else{...}中的分支不出错!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值