CannotAcquireLockException上的事务回滚

时间:2018-03-06 17:26:23

标签: java spring hibernate spring-jdbc

我使用spring AOP + hibernate事务管理器来管理我的事务。在我的生产环境中,由于一些并行运行的作业,我得到了CannotAcquireLockException。

我有一个标题表和一个项目,当我尝试插入标题表时,项目由hibernate级联功能自动插入。因此,当我在项目表上遇到CannotAcquireLockException时,唯一的标题是保存而不是项目,即使它们在同一个事务中。

不幸的是,我不应该分享我的代码,但如果您需要任何细节,请告诉我。

当我收到任何其他异常时,事务将被回滚。

1 个答案:

答案 0 :(得分:0)

这是一个明确的僵局。这与DB错误更相关,而不是类的hibernate / Spring问题。我遇到类似的情况,其中一个线程正在做Select而另一个线程试图插入/更新同一行。一些快速的解决方案。

  1. 使用选择..对于更新sql查询:这通常会在操作完成之前获取特定索引的锁定。
  2. 在数据库方面:创建索引也有帮助。
  3. 希望这会有所帮助。更多详情here