Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) Hibernate报错异常处理
org.hibernate.StaleObjectStateException:Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
报错原因:
遇到这样的异常说明了操作的对象使用了乐观锁或者定义的pojo定义了version字段
- 当前的version与db数据库的version不一致,数据在修改的时候form的值对象中version与数据库中对应记录的version的值不一致,这使得在调用update方法时,version不一致导致倒错。
- 两个或两个以上的session对同一记录进行了修改操作
解决方法:
- 在提交表单数据时,将version也一起提交
- 先把数据库中对应的记录的version的值查询出来并赋值给要修改的实体对象,再执行update操作(在对数据库数据进行修改操作后,其version的值会改变,所以这时候执行更新操作的话需要获取到最新的version的值,将其赋值给操作对象,再执行更新操作)