springboot2.0事务未生效

匿名 (未验证) 提交于 2019-12-03 00:22:01

配置加了

@EnableTransactionManagement

方法上加了

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 36000, rollbackFor = Exception.class)

不起作用。

原因:Springboot2.0后,依然是使用jpa、Hibernate来操作mysql,发现Hibernate默认创建的表是myisam引擎,而不是innodb不起作用,myisam引擎是不支持事务的



CREATE TABLE `user` (   `id` int(11) NOT NULL,   `username` varchar(255) DEFAULT NULL,   `password` varchar(255) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

添加下面的方言即可修改为innodb

spring:     jpa:       database: mysql       show-sql: true       hibernate:         ddl-auto: update         naming:           physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy       database-platform: org.hibernate.dialect.MySQL5InnoDBDialect  #不加这句则默认为myisam引擎  

也可以参考这位同学写的

mysql下如何更改database下所有表的数据引擎--MyISAM 到InnoDB

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!