我想在DAO中使用相同的函数,假设getBalances()具有安全的SERIALIZABLE隔离:
@Transactional(isolation=Isolation.SERIALIZABLE)
public List<Balance> getBalances() { ... }在重要业务逻辑方法中:
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;
如何实现来自不同调用源的对同一方法的双重(安全、可序列化和不安全)访问?
发布于 2014-04-02 10:53:37
尝试在@Transactional(propagation = Propagation.MANDATORY)上使用getBalances并在调用服务上定义隔离。
https://stackoverflow.com/questions/22809076
复制相似问题