首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate:防止不同线程插入重复行。

Hibernate:防止不同线程插入重复行。
EN

Stack Overflow用户
提问于 2020-09-23 17:23:31
回答 1查看 85关注 0票数 0

我使用hibernate实现Spring的数据持久性。

情景是

Time- 00 Hour:01 Minute:01 Second:100 ms

  • Request-1用于持久化名为"abc“的人,姓"Xyz”(请考虑本会话1)
  • DB,如果同一条记录存在
  • ,则没有创建记录找到的
  • 对象,Hibernate生成记录

f 210的唯一ID

Time- 00 Hour:01 Minute:01 Second:102 ms

  • Request-2用于持久化名为"abc“的人,姓"Xyz”(请考虑本会话2)
  • DB,如果同一条记录存在
  • ,则没有创建
  • 对象,Hibernate生成记录

F 221的唯一ID

Time- 00 Hour:01 Minute:01 Second:103 ms

saveOrUpdate();持久化记录的

  • 会话1

Time- 00 Hour:01 Minute:01 Second:104 ms

saveOrUpdate();持久化记录的

  • 会话2

由于这两个会话都生成唯一的标识,hibernate将它们视为单独的对象并在DB中持久化。但是,这会在以后的应用中引起问题。

我也有唯一的索引,但也包括Id字段,所以DB也不能将它们作为唯一的记录来处理。

建议避免重复插入的方法。

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 22:11:41

对于我来说,最简单的解决方案是添加一个多列约束。

代码语言:javascript
复制
@Table(name = "Person", uniqueConstraints = @UniqueConstraint(columnNames = {"Name", "LastName"}))

处理代码中的异常以便响应客户端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64033219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档