【问题标题】:How to deal with Spring hibernate no lock aquired exception inside a transaction如何处理事务中的 Spring hibernate no lock aquired 异常
【发布时间】:2020-05-19 15:29:48
【问题描述】:

我在我的界面中应用了@Transactional,在我的serviceImpl里面,对应的方法在调用其他一些方法,一个方法是读,另一个方法是写。虽然我已经注释为事务,但当我发出并发请求时,我的插入方法会抛出 org.hibernate.exception.LockAcquisitionException: 错误。 另一个问题是,这个 insert 方法是一个共享方法,它执行类似于 Dao.save(obj) 的 insert 方法。 Dao.save() 是一个通用方法所以我不能在这里做任何事情。我必须在界面上应用一些东西以避免没有锁定异常。 是否可以告诉等待直到获得锁定?还是交易失败时重试?还是锁定所有表直到事务完成,使另一个请求无法访问相关资源? 我的hibernate版本是3.x,数据库是mysql 5.6

【问题讨论】:

    标签: spring hibernate


    【解决方案1】:

    最好的方法是,

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

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多