一、症状描述
optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
出现以上异常,由于 保存的实体中使用 @version 乐观锁机制,当并发修改实体或者一个事务中两次以上更新实体时,乐观锁version没有对上,导致操作数据库失败。
二、解决方式
更新前获取最新的version;
如果事务中超过两次更新同一个实体,那么在前面每次操作完数据库之后,需要将操作后的对象返回,下次操作时,保证该对象的版本号是最新的