如何在事务中处理Spring休眠无锁获取的异常

赛义德·乌兹·扎曼(Sayed Uz Zaman)

我在接口中应用了@Transactional,在serviceImpl中,相应的方法正在调用其他方法,一个方法在读取,另一种方法在写入。尽管我将其注释为“事务性”,但是当我发出并发请求时,我的insert方法会抛出org.hibernate.exception.LockAcquisitionException:错误。另一个问题是,此插入方法是共享方法,并且执行类似于Dao.save(obj)的插入方法。Dao.save()是一种通用方法,因此我在这里无法执行任何操作。我必须在接口上应用一些东西,以避免没有锁获得的异常。是否可以告诉等待直到获得锁定?如果交易失败,还是重试?还是锁定所有表,直到事务完成,以便另一个请求无法访问相关资源?我的休眠版本是3.x,数据库是mysql 5.6

赛义德·乌兹·扎曼(Sayed Uz Zaman)

最好的方法是

  1. 将您的方法标记为事务性
  2. 在您的mysql数据库设置中,将事务隔离级别设置为SERIALIZABLE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章