首页 > 解决方案 > 异步数据库保存抛出 DataIntegrityViolationException

问题描述

我有一个异步保存到数据库的应用程序,现在的问题是如果有效负载中有重复项(相同的 ID),或者应用程序接收到多个(ID 相同)有效负载到多个实例,Hibernate 会为它们和一个创建插入稍后收到会抛出 DataIntegrityViolationException,因为 Id 已经存在。有@retryable第二次重试,Hibernate 创建更新语句,第二次有效负载更新现有记录。如何避免异常。

我也试过@Transactional@Lock(LockModeType.PESSIMISTIC_WRITE)。但它没有用。我正在使用 Spring JPA 和@Async

[{"id":1, "name":"abc"}, {"id":1, "name":"efg"}]

标签: javadatabasehibernatespring-bootasynchronous

解决方案


推荐阅读