开始第二个事务之前,使用session.flush()刷新一下会话

解决方案 »

  1.   

    hibernate的delete并不会马上执行数据库的delete语句,而是先缓存到一个集合中,起个名字叫deletes集合
    在进行save的时候,会把语句缓存在一个insert集合中,比如叫inserts集合
    在update的时候,会缓存在updates集合中当事务提交的时候,不管是先delele还是先update,他的顺序都是:先执行inserts再updates再deletes所以如果多部操作的的话,建议在每一个数据库操作后面都加上session.flush();
    比如:
    session.delete(xx);
    session.flush();
    session.save(xxx);
    session.flush();