Row was updated or deleted by another transaction 异常的处理

Hibernate事务异常:

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)

遇到该异常说明操作对象时应用了乐观锁机制或定义POJO时定义了version字段。

错误的原因:

当前version版本与数据库中version版本不一致。

  • 两个以上的session同时对此记录进行了相似操作;
  • 数据提交问题:通过编辑页面来修改一条记录时,提交上来的form值对象中version为空或者不等于数据库中对应该记录的version字段值,调用update方法时,version不一致就会出错。

错误的解决:

  • 在提交数据时,把version也一并提交上来;
  • 在数据库中把version的值查出来,赋给实体对象,再执行更新操作。
    注:每次执行更新才做之后,version的值都会改变,所以需要再次执行更新操作,必须先把version的值查出来,赋最新的version值,再执行更新操作。

你可能感兴趣的:(Row was updated or deleted by another transaction 异常的处理)