在消息驱动的bean中,我将条目持久化到具有唯一条目的lookup-table。基本上我用条件api创建一个select语句,如果我没找到条目,我创建一个。
目前此代码遇到mysql错误,因为在某些情况下,此条目创建(em.persist(entry)
)将违反我的数据库中的唯一约束。我的mdb的另一个实例在我找不到它之前创建了查找条目,然后我才能创建它。
如何处理此同步问题,因此仍然只有一个条目?
答案 0 :(得分:1)
您需要使用SELECT FOR UPDATE或以不同方式确保唯一性(例如,在Java中生成条目的唯一部分)。
Hibernate支持pessimistic locks,我认为这只是同一事物的另一个名称。