我想在DAO中使用相同的函数,假设getBalances()
具有安全SERIALIZABLE
隔离:
@Transactional(isolation=Isolation.SERIALIZABLE)
public List<Balance> getBalances() { ... }
重要的商业逻辑方法:
public doVeryImportantFinancialChanges() {
.. complicated logic with multiple getEntries() calls, multiple SELECT/UPDATE...
}
但我也希望不安全&#34;生活视图&#34;每1-2秒调用一次余额,只有SELECT
和可接受的破坏完整性以及所有那些不可重复的幻像等数据。
问题在于我的生活观&#34;预定SELECT
请求者使用getBalances()
高度隔离的函数,并获取:
org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback; SQL [SELECT * FROM ....]; Deadlock found when trying to get lock; try restarting transaction;
如何从不同的来源实现对同一方法getBalances()的双重(安全可序列化和不安全)访问?
答案 0 :(得分:2)
尝试在@Transactional(propagation = Propagation.MANDATORY)
上使用getBalances
并定义呼叫服务的隔离。