java - 在 Spring Data 中更新

标签 java spring jpa spring-data-jpa spring-data

有一张 table

columns: id(pk), name, attribute 
unique constraint on (name, attribute).

如果记录不存在,就会有一堆线程插入表中。为此使用了 Spring Data,它完成了一项可能需要一些时间的事务。记录可以是相同的,意思是相同的(名称,属性),同时在几个线程中。有时会发生竞争情况,线程 A 尝试提交新记录,而线程 B 在线程 A 读取它之前提交了相同的记录。

在这种情况下是否有任何方法可以进行更新插入?

也许,还有其他解决此问题的建议,我们很乐意听到。

最佳答案

要么以 JPA 方式进行:

尝试找到实体,如果不存在,保存它。 如果存在,则无事可做,但您当然可以通过操作找到的实体来更新它。

或者使用 SQL 并编写许多数据库方言支持的实际更新插入/合并语句。

关于java - 在 Spring Data 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58134086/

相关文章:

java - 获取 Struts2 中已配置操作的列表

java - 如何在Spring数据JPA中获取结果集中的列名

java - EntityManager 的 find() 方法是否创建 JPA 类的新实例?

java - Java EE 中与数据库的简单连接

java - 支持来自 Apache FOP PDF 生成的外部 CSS 文件

java - Jar 输出中的 UTF-8 编码损坏

java - 类构造函数参数导致异常

java - 基本计算 "Multiple markers on this line syntax error, delete this token"

java - Canvas 和 JPanel 的区别

java - 如何创建未分页但已排序的 Pageable.of(unpaged, unpaged, Sort ) 到 spring 数据 jpa 存储库?