java - 异步数据库保存抛出 DataIntegrityViolationException
问题描述
我有一个异步保存到数据库的应用程序,现在的问题是如果有效负载中有重复项(相同的 ID),或者应用程序接收到多个(ID 相同)有效负载到多个实例,Hibernate 会为它们和一个创建插入稍后收到会抛出 DataIntegrityViolationException,因为 Id 已经存在。有@retryable
第二次重试,Hibernate 创建更新语句,第二次有效负载更新现有记录。如何避免异常。
我也试过@Transactional
了@Lock(LockModeType.PESSIMISTIC_WRITE)
。但它没有用。我正在使用 Spring JPA 和@Async
[{"id":1, "name":"abc"}, {"id":1, "name":"efg"}]
解决方案
推荐阅读
- java - 带有json类型的JAVA继承+ Postgresql
- python - 如何在 Python 中生成 Word2vec 向量?
- python - 在 LabelFrame 中定位单选按钮
- google-cloud-dataflow - 如何使用 DataFlow 的 Cloud BigTable 连接器过滤行中最旧的单元格?
- xml - 在没有字段规范的情况下在 SOLR 7 上索引整个 XML 文档
- c++ - 如何获取匹配组的索引
- sql - 在关系数据库中实现队列模型
- swift - 将字典传递给 init 方法
- hyperledger-fabric - Hyperledger Fabric Node.js SDK API 注册失败
- vba - VBA 从网站下载 CSV