繁体   English   中英

如何处理 jpa 中的并发插入

[英]How to handle concurrent inserts in jpa

我目前有多条消息在同一秒内到达。 它们具有以下属性:

  1. 父键
  2. 描述
  3. 数量

逻辑如下:

  1. 在 key = ParentKey 处查找父级

    a) 如果 parent 不存在,则插入带有 key = ParentKey 的 parent

  2. 使用(id,parent_key,description,amount)插入孩子

现在的问题是,在并行处理中,我要么得到隔离级别 SERIALIZE 的异常(这是正确的吗?),要么是父级的 UniqueConstraintViolation。

如果我对键没有唯一约束,而只有一个序列号,我最终会得到多个条目。

有什么办法可以防止这种情况发生吗? 或者任何重试机制? 我只想为这个 id 插入一个。

我遇到了同样的情况。 在我的情况下,我创建了另一个 ejb,其中 Transaction Attribute 设置为 REQUIRES_NEW 并在那里执行插入,然后在调用者 ejb 中捕获潜在的异常。 然后在 catch 块中再次调用执行插入的 ejb。

如果您希望插入是与其他数据库更新活动相同的事务的一部分,则此方法可能不适用于所有情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM