无法获取锁定异常上的事务回滚



我正在使用Spring AOP + hibernate事务管理器来管理我的事务。在我的生产环境中,由于某些作业并行运行,我遇到了无法获取锁定异常。

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

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

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

这是一个明确的僵局情况。这更与数据库错误有关,而不是类的休眠/弹簧问题。我遇到了类似的情况,一个线程正在执行选择,而另一个线程正在尝试插入/更新同一行。一些快速的解决方案。

  1. 使用选择..对于更新sql查询:这通常会获取特定索引上的锁,直到操作完成。
  2. 在数据库端:创建索引也有帮助。

希望这有帮助。更多细节在这里

最新更新