加了@Transactional(rollbackFor = Exception.class)但没有回滚事务
时间: 2023-08-17 20:16:28 浏览: 95
根据提供的引用内容,如果在方法a中调用了同一个类中的方法b,并且在方法b上加了@Transactional注解,但是事务没有回滚的话,可能是因为方法b没有被代理。在引用\[2\]中提到,如果在同一个类中调用方法b时,需要使用self.b()而不是直接调用b()。所以,你可以尝试在方法a中使用self.b()来调用方法b,这样事务应该会生效并且回滚。
#### 引用[.reference_title]
- *1* *2* *3* [@Transactional(rollbackFor = Exception.class) 不生效,没回滚](https://blog.csdn.net/changrj6/article/details/121077180)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
@Transactional(rollbackFor = Exception.class) 手动回滚
@Transcational(rollbackFor = Exception.class)是一个用于在方法执行过程中手动回滚事务的注解。当方法中出现异常时,会根据该注解的设置触发事务回滚操作。在引用中的示例代码中,通过调用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()方法,可以手动将当前事务标记为回滚状态。这样,在方法执行完成后,事务管理器会根据事务的回滚状态进行相应的处理,将事务回滚至之前的状态。所以,在引用中的代码示例中,return语句可以正常执行,但事务会被回滚。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [@Transactional 注解,异常出发回滚,手动回滚。](https://blog.csdn.net/zka_yyds/article/details/130319476)[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_2"}}] [.reference_item style="max-width: 50%"]
- *2* [@Transactional 注解的方法内手动回滚事务](https://blog.csdn.net/weixin_44665047/article/details/126964222)[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_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
@Transactional(rollbackFor = Exception.class) 回滚SQL异常
在使用Spring框架进行事务管理时,@Transactional注解可以用来标记需要进行事务管理的方法。当方法执行过程中出现异常时,@Transactional注解可以自动回滚事务。但是默认情况下,@Transactional只会对RuntimeException和Error类型的异常进行回滚,对于SQLException等其他类型的异常不会进行回滚。因此,需要在@Transactional注解中使用rollbackFor属性来指定需要回滚的异常类型。
具体来说,如果需要对SQLException进行回滚,可以在@Transactional注解中添加rollbackFor属性,如下所示:
```java
@Transactional(rollbackFor = SQLException.class)
public void someMethod() {
// do something that may throw SQLException
}
```
上述代码中,@Transactional注解中的rollbackFor属性指定了需要回滚的异常类型为SQLException。当someMethod()方法执行过程中出现SQLException异常时,事务会自动回滚。
阅读全文