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值,再执行更新操作。
网友评论