我现在有一个事务处理
在这个事务里需要保存A,B两张表的值,查询C,并且更新D,如果有一张不成功就全部会滚
public String saveMoveContPlan(MoveContPlan mcp,List<MoveContPlanDetail> list) {
BaseHibernateDAO moveContPlanDao = new BaseHibernateDAO("MoveContPlan");
Session s = moveContPlanDao.getSession();
Transaction tx = s.beginTransaction();
mcp.setAAA("xxx");
...
moveContPlanDao.save(mcp);
然后在后面需要把list的值保存到MoveContPlanDetail这个表中,而在执行moveContPlanDao.save();for (int i = 0; i < list.size(); i++) {
  MoveContPlanDetail m = (MoveContPlanDetail) list.get(i);
  List flist = moveContPlanDao.findByHql("from Zgxxxb where containerNo='"+ m.getId().getContainerNo() + "'");
  if (list == null) {
   continue;
  }
  Zgxxxb zgxxb = (Zgxxxb) flist.get(0);
  m.setRealContDistrict(zgxxb.getContainerAreas());
  m.setRealContPos(zgxxb.getContainerPosition());
  // 更新另外一张表
  moveContPlanDao.UpdateByHQL("update CfsContainerPos set posState='P' where containerPosNo='"+m.getPlanContPo()+"'");
  moveContPlanDao.save(m);
tx.commit();在循环中执行插入的时候就会抛出Session is closed,应该是在第一次执行save的时候session就被关闭了,请教大虾们有什么办法解决?在不改动配置文件的情况下。