Springboot hibernate 事务不回滚

Springboot hibernate 事务不回滚

问题排查

1,首先需要在启动类上添加注解 @EnableTransactionManagement

2,在public方法上添加注解 @Transactional

3,如果使用了try来捕获异常,可以手动添加代码 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 来回滚异常

注意,数据库方言应该使用如下

org.hibernate.dialect.MySQL5InnoDBDialect

通常,经过上面的3步即可

但是如果你使用的mysql,那么可能还是无法回滚

因为你的数据库使用的引擎是 MyISAM  他是事务不安全的,我们应该使用 InnoDB

如果在切换引擎时出现类似于这种错误

Table storage engine for '#sql-xxx' doesn't have this option

那么可能的原因是该表是一张静态表[static/fixed ]

我们可以执行如下语句,将其设定为动态表即可

ALTER TABLE 表名 ROW_FORMAT = DYNAMIC


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img