spring - 如何处理事务中的 Spring hibernate no lock aquired 异常
问题描述
我在我的界面中应用了@Transactional,在我的serviceImpl里面,对应的方法在调用一些其他的方法,一个方法是读,另一个方法是写。虽然我已注释为事务性,但当我发出并发请求时,我的插入方法会抛出org.hibernate.exception.LockAcquisitionException:
错误。另一个问题是,这个 insert 方法是一个共享方法,它执行类似于 Dao.save(obj) 的 insert 方法。Dao.save() 是一个通用方法所以我不能在这里做任何事情。我必须在界面上应用一些东西以避免没有锁定异常。是否可以告诉等待直到获得锁定?还是交易失败时重试?还是锁定所有表直到事务完成,使另一个请求无法访问相关资源?我的休眠版本是 3.x,数据库是 mysql 5.6
解决方案
最好的方法是,
- 将您的方法标记为事务性的
- 在您的 mysql 数据库设置中,将事务隔离级别设置为SERIALIZABLE
推荐阅读
- html - 如何在 freeMarker 中动态访问分配的变量
- jquery - jQuery - 单击并隐藏所有其他元素(不是直接父元素)的切换元素
- download - 使用 ZK 的 `Filedownload.save()` 时如何指定文本/CSV 文件的编码?
- c# - C# - 泛型类中的方法,对 T 有附加约束
- r - 为每个条形图添加一个标签 r
- android-studio - 方法“getExternalFilesDirs”添加到黑名单
- android - 在安卓模拟器中运行系统应用
- docker - 是否可以将 Docker 中的卷视为设备?
- sql - JDBC 批量插入,返回 ID
- javascript - 如何在 javascript 中测试模式正则表达式