【问题标题】:How to handle Multithreaded insertions with unique constrain in the database using JPA/Hibernate?如何使用 JPA/Hibernate 在数据库中处理具有唯一约束的多线程插入?
【发布时间】:2011-04-15 10:47:07
【问题描述】:

在消息驱动的 bean 中,我将条目保存到具有唯一条目的查找表中。基本上我使用标准 api 创建一个选择语句,如果我没有找到一个条目,我创建一个。

目前此代码遇到 mysql 错误,因为在某些情况下,此条目创建 (em.persist(entry)) 会违反我数据库上的唯一约束。我的 mdb 的另一个实例在我找不到查找条目之后创建它之前创建了它。

我该如何处理这个同步问题,所以仍然只有一个条目?

【问题讨论】:

    标签: hibernate jpa jboss synchronization message-driven-bean


    【解决方案1】:

    您需要使用SELECT FOR UPDATE 或以不同方式确保唯一性(例如在Java 中生成条目的唯一部分)。

    Hibernate 支持 pessimistic locks,我认为这只是同一事物的另一个名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2018-07-25
      相关资源
      最近更新 更多