springboot事务@transactional不生效解决

项目开发时遇到的@transactional不生效问题整理

没开启@EnableTransactionManagement注解

开启事务管理器
解决方法:在启动类上添加@EnableTransactionManagement注解

多数据源没有指定事务数据源

很多项目都是多数据源项目。配置多数据源后,事务注解上没有选中数据源。
这也是我遇到的问题。
数据源配置
添加数据源
在事务注解上加上数据源。

异常不满足回滚要求

springboot默认检测RuntimeException和Error进行回滚,如果产生的异常不是这两类及其子类,springboot不会进行回滚。
解决办法:手动加上异常条件rollbackFor = {BizException.class,Error.class,RuntimeException.class}
其中 BizException extends Exception

Mysql数据库的引擎不支持

数据库引擎
默认InnoDB支持事务。
解决办法:手动修改为InnoDB,或者在建表时选定InnoDB为默认引擎。

在Spring Boot中,如果使用@Transactional注解事务不生效,可能有以下几个原因。首先,确保在启动类上没有显式添加@EnableTransactionManagement注解。因为SpringBoot的自动配置机制已经在TransactionAutoConfiguration中启用了该注解,不需要再在启动类上添加。其次,确保你的@Transactional注解被正确应用在需要开启事务的方法上。例如,你可能将它应用在了私有方法上,但是@Transactional只能应用在public方法上才能起作用。还有一种情况是你可能在同一个类中调用了@Transactional注解的方法,这时事务是不会生效的,因为事务的机制是基于代理的,而同一个类内部的方法调用并不会触发代理。解决办法是将被调用的方法移动到另一个类中。最后,如果你使用的是JPA,还需要确保你的方法被正确声明为抛出异常。因为只有在方法抛出RuntimeException或Error时,事务才会回滚。如果你抛出了其他类型的异常,事务将不会回滚。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot中使用@Transactional注解事物不生效的原因(数据库事务隔离机制以及传播机制传播行为)](https://blog.csdn.net/zy103118/article/details/122296318)[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: 33.333333333333336%"] - *2* [SpringBoot @Transactional 注解未生效](https://blog.csdn.net/weixin_45505313/article/details/103284559)[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: 33.333333333333336%"] - *3* [Spring Boot中Spring data注解的使用](https://download.csdn.net/download/weixin_38506713/13687824)[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: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值