前言
接上章,springboot-jpa-atomikos多数据源分布式事务(https://www.jianshu.com/p/3f7bbbd9fb35)
细心的同学肯定发现了,我们至今为止的案例基本上所有的配置都只有application.yml一个文件,为何上章多了一个hibernate.properties文件,此文件是干啥的? 能否统一到application.yml中去。
原因
先说明下博主的环境
springboot2.1.3 release
mysql 5.7
好吧,博主解释下,关于hibernate.properties这个配置文件,是为了解决JPA自动生成表引擎为myisam的,熟悉mysql的都知道,myisam引擎并不支持事务,只有innodb引擎才支持事务的处理。为了解决JPA自动生成的表为myisam引擎,博主整整花了半个下午,是的,整个互联网充斥着复制粘贴的过时解决方案。
形如这样的
让你在application.properties中
加上
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
或者加上
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57InnoDBDialect
当然还有其它乱七八糟的解决方案,博主不一一罗列了,博主为了解决jpa自动生成的表为myisam的问题,逐一试了个遍,结果根本解决不了问题,最后在官方文档里发现,原来,在新版的springboot里,形如MySQLInnoDBDialect已经被弃用了,像博主使用的是当前最新版的2.1.3 release使用这种方式显然是做无用功。
解决方案
新增 hibernate.properties
hibernate.dialect.storage_engine=innodb
解决问题
总结
还是官方文档靠谱。
网友评论