gpt4 book ai didi

java - Spring @Transactional 具有来自不同调用源的不同隔离级别

转载 作者:行者123 更新时间:2023-12-02 05:59:13 24 4
gpt4 key购买 nike

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

@Transactional(isolation=Isolation.SERIALIZABLE)
public List<Balance> getBalances() { ... }

重要业务逻辑方法中:

public doVeryImportantFinancialChanges() {
.. complicated logic with multiple getEntries() calls, multiple SELECT/UPDATE...
}

但我也希望每 1-2 秒调用一次不安全余额的“生命 View ”,仅使用 SELECT 和可接受的完整性损坏以及所有不可重复的、幻影等.数据。

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

org.springframework.dao.DeadlockLoserDataAccessException:PreparedStatementCallback; SQL [SELECT * FROM ....];尝试获取锁时发现死锁;尝试重新启动事务;

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

最佳答案

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

关于java - Spring @Transactional 具有来自不同调用源的不同隔离级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com