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



我已经在我的界面中应用了@Transactional,在我的serviceImpl中,相应的方法是调用其他一些方法,一个方法是读取,另一个方法是写入。尽管我已注释为事务性,但当我发出并发请求时,我的插入方法抛出org.hibernate.exception.LockAcquisitionException:错误。 另一个问题是,这个插入方法是一个共享方法,它执行像Dao.save(obj(这样的插入方法。Dao.save(( 是一个通用方法 所以我在这里什么也做不了。我必须在接口上应用一些东西以避免没有锁定异常。 是否可以告诉等待直到锁定被获取?或者如果交易失败,请重试?或者锁定所有表,直到事务完成,以便另一个请求无法访问相关资源? 我的休眠版本是3.x,数据库是mysql 5.6

最好的方法是,

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

相关内容

最新更新