我有一个与自身有多对多连接的类。
在问题场景中,我有两个对象: 第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)
但这没有效果。
如何解决此问题?
答案 0 :(得分:0)
@Transactional
注释无法解决您的问题。在更新方法中的某处,您必须检查Item1
是否已与Item2
相关联。
与@Transactional
一起,它将有助于消除您的问题。