@Transactional没回滚要怎么排查
时间: 2023-10-12 20:08:15 浏览: 157
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
如果使用了@Transactional注解但是没有回滚的话,可以按照以下步骤进行排查:
1. 确保@Transactional注解应用在public可见度的方法上。因为它只能应用于public方法,如果应用在protected、private或者package可见度的方法上,事务设置不会起作用。
2. 检查方法是否被正确地调用。@Transactional注解只对外部调用的方法起作用,如果方法是通过内部调用或者通过this关键字调用的,事务设置可能不会生效。
3. 确保方法被正确地代理了。@Transactional注解是通过Spring AOP来实现的,所以被注解的方法必须通过代理来执行才能触发事务管理器的逻辑。如果方法没有被代理,事务设置也不会生效。
4. 检查事务传播属性是否正确设置。事务传播属性决定了方法在一个现有事务中运行还是创建一个新的事务。如果使用了NESTED属性,内部事务的回滚不会对外部事务造成影响。如果使用了REQUIRED属性,没有活动事务时才会创建一个新的事务。
5. 检查是否配置了只读事务。只读事务的标志只在事务启动时应用,如果事务已经启动则该配置会被忽略。因此,如果只是读取数据而没有修改操作,不必设置只读事务,避免增加额外的系统开销。
通过以上排查步骤,可以定位并解决@Transactional注解没有回滚的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [@Transactional 回滚不生效原因](https://blog.csdn.net/nmjhehe/article/details/82796028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文