JPA optimistic locking failed 异常

一、症状描述

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;

如果事务中超过两次更新同一个实体,那么在前面每次操作完数据库之后,需要将操作后的对象返回,下次操作时,保证该对象的版本号是最新的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序...
    蝈蝈泡泡奶片阅读 1,120评论 0 10
  • 对于开发的网站,如果网站的访问量非常大,那么我们应该考虑相关的、并发访问问题,并发是绝大部分程序员头疼的问题;...
    木有鱼丸啦阅读 1,317评论 0 1
  • Hibernate体系结构图 Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象) ...
    Joe_IT阅读 285评论 0 0
  • 基础 首先需要清楚几个基本概念,锁定对于避免因两个并发用户同时更新相同数据而导致的更新冲突至关重要。 并发:系统能...
    机智小当家阅读 4,470评论 0 0
  • 原文地址 为了能够同步访问实体,JPA提供了2种锁机制。这两种机制都可以避免两个事务中的其中一个,在不知情的情况下...
    重度恐高症阅读 16,268评论 3 13