我想使用DAO相同的功能,具有安全SERIALIZABLE
隔離假設getBalances()
:春@Transactional從不同的呼叫來源不同的隔離級別
@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;
如何雙重實現的(安全序列化和不安全的)訪問同樣的方法getBalances()來自不同的呼叫源?
該服務應該是事務性邊界,而不是您的道。將具有適當配置的'@ Transactional'移至所需的服務方法。 –