SpringBoot2.x使用H2作为单元测试的hibernate.dialect问题

场景

在开发过程中,需要使用MySQL进行测试,但是在进行单元测试时,希望使用H2数据库进行。但是当在项目中自定义了JPAConfig类后,使用MySQL跑单元测试正常,但是当使用dev、test环境进行配置,并将单元测试的配置文件指定为test之后,会出现hibernate.dialect以及读取不到H2的SQL语句文件等错误。

配置文件

集成JPA时,可以自定义配置文件JPAConfig,在文件中使用自定义Bean来完成配置;也可以不用配置文件,直接在application.properties文件中对JPA进行相关配置。如果使用前者,可支持的自定义属性会相对更多,但是一些默认的配置会优先加载配置文件中的,如果配置文件中没有,则会报错。而且配置文件在有多种类型数据源的情况时,并不能适配使用,同样会引起报错。

解决

方案一:

删除JPAConfig配置文件,因为该文件中并没有太多的定制化配置,直接在properties文件中进行JPA的配置同样可行,这样还能解决以上出现的问题。但是如果自定义配置文件中有较多的定制化配置,那么需要采用方案二。

方案二:

在JPAConfig配置文件上添加@Profile("dev")注解,标识此配置类为dev环境下的。单元测试指定配置文件为test后,不会使用此配置文件。

此外,在这过程中,还需要搜索并配置hibernate.dialect,在Springboot2.x以后,配置的方式为:spring.jpa.database-platform,H2的方言为org.hibernate.dialect.H2Dialect,MySQL的方言为org.hibernate.dialect.MySQL5InnoDBDialect

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值