用session.flush是不行的,如果配置了connection.autocommit=true
执行session.flush会马上执行sql!不知道你的问题是什么?
因为在一个是事务里,所以第二个方法实际上是执行了更新操作。
.merge(detachedInstance);方法;可以保存游离实体
saveOrUpdate(instance)方法;
看你调用哪个了!

解决方案 »

  1.   

    暂时是解决了,session.flush后,我又用了session.clear
      

  2.   

    public void addRoughInto(OperRecord operRc, int partsId, int operId,
    int secId) {

    this.addRough(operRc, partsId, operId, secId);
    Stats stats = this.listStats(partsId, secId, operRc.getNumber());
    this.addMoPiRk(stats, operRc.getNumber());
    this.getSession().flush();
    this.getSession().clear(); this.addPartsInfo(operRc, secId, partsId, Permission.PRO_IN);
    }
    蓝色的执行一个插入操作
    红色执行另一个插入操作
    这两个操作必须成对出现,不能一个成功一个失败
    这里我用了session.clear
    目前是解决问题了,两个操作都插入两行数据,但是不知道这个有没有什么“副作用”