首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自不同调用源的不同隔离级别的Spring @Transactional

来自不同调用源的不同隔离级别的Spring @Transactional
EN

Stack Overflow用户
提问于 2014-04-02 10:48:47
回答 1查看 346关注 0票数 1

我想在DAO中使用相同的函数,假设getBalances()具有安全的SERIALIZABLE隔离:

代码语言:javascript
复制
@Transactional(isolation=Isolation.SERIALIZABLE)
public List<Balance> getBalances() { ... }

在重要业务逻辑方法中:

代码语言:javascript
复制
public doVeryImportantFinancialChanges() {
.. complicated logic with multiple getEntries() calls, multiple SELECT/UPDATE...
}

但我也想让不安全的“生命视图”每1-2秒调用一次,只有SELECT和可接受的破坏完整性以及所有那些不可重复的、幻影等数据。

问题是,我的“生命视图”计划的SELECT请求者使用getBalances()高度隔离的函数,并获得:

org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [SELECT * FROM ....]; Deadlock found when trying to get lock; try restarting transaction;

如何实现来自不同调用源的对同一方法的双重(安全、可序列化和不安全)访问?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 10:53:37

尝试在@Transactional(propagation = Propagation.MANDATORY)上使用getBalances并在调用服务上定义隔离。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22809076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档