Hibernate试图使many2many链接两次(并发)

时间:2016-02-25 07:55:07

标签: java spring hibernate

我有一个与自身有多对多连接的类。

在问题场景中,我有两个对象: 第1项 第2项

他们彼此相连。但是,这就是扭曲:UI同时发送两个对象更新请求:一个用于项目1,一个用于项目2. 所以这是一个并发问题。

问题: 更新功能检测到项目1尚未链接到项目2并建立链接。这导致插入many2many表(第1项,第2项) 更新功能还检测到项目2尚未链接到项目1并建立链接。这导致相同的插入到many2many表(第1项,第2项)

这两个插入中的一个将失败

Cannot insert duplicate key row in object 'dbo.ItemLinks' with unique index 'IX_ItemLinks_1'. The duplicate key value is (1, 2).

我尝试将更新方法放入

@Transactional(isolation = Isolation.SERIALIZABLE)

但这没有效果。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

@Transactional注释无法解决您的问题。在更新方法中的某处,您必须检查Item1是否已与Item2相关联。

@Transactional一起,它将有助于消除您的问题。