[英]How to handle concurrent inserts in jpa
我目前有多条消息在同一秒内到达。 它们具有以下属性:
逻辑如下:
在 key = ParentKey 处查找父级
a) 如果 parent 不存在,则插入带有 key = ParentKey 的 parent
使用(id,parent_key,description,amount)插入孩子
现在的问题是,在并行处理中,我要么得到隔离级别 SERIALIZE 的异常(这是正确的吗?),要么是父级的 UniqueConstraintViolation。
如果我对键没有唯一约束,而只有一个序列号,我最终会得到多个条目。
有什么办法可以防止这种情况发生吗? 或者任何重试机制? 我只想为这个 id 插入一个。
我遇到了同样的情况。 在我的情况下,我创建了另一个 ejb,其中 Transaction Attribute 设置为 REQUIRES_NEW 并在那里执行插入,然后在调用者 ejb 中捕获潜在的异常。 然后在 catch 块中再次调用执行插入的 ejb。
如果您希望插入是与其他数据库更新活动相同的事务的一部分,则此方法可能不适用于所有情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.