spring-data-jpa SQL Server的Spring Data JPA死锁问题

gj3fmq9x  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(322)

我有一个复杂的业务Web应用程序,它接收到多个并发请求。其中一个请求是处理新发票。如果同时接收到多个这样的请求,则至少有一个请求将由于以下错误Transaction (Process ID X) was deadlocked on lock resources而发生回滚。
我已经浏览了很多关于这个主题的StackOverflow条目,但是没有一个给我一个解决方案。我试着打开SNAPSHOT ISOLATION,但是没有任何变化。我试着重新排序我的代码,但是没有用。用户https://stackoverflow.com/users/1560836/user1560836Correct way to handle deadlocks in Hibernate上评论说这个问题根本没有解决方案,看起来很有可能。但是,我还是觉得很难相信,这些框架是如何被使用
有没有人有一个建议或可能的解决方案?还有,你有一个解决方案,至少监测这些事件?任何帮助将不胜感激。

ie3xauqp

ie3xauqp1#

对于任何发现自己处于与我同样困境的人来说,迄今为止销售了大多数问题的解决方案是使用Optimistic Locking。遵循这个非常有用的Baeldung guide,我设法以一种非常优雅的方式解决了我的问题。
1.将bigint字段添加到在通常死锁的事务中修改的表中(数据库方面)
1.将@Version添加到JPA模型
有了一个相当简单的解决方案,我大部分陷入僵局的问题都消失了。希望这对其他人有帮助。

相关问题