import.sql和data-$ {platform} .sql之间的区别

时间:2018-11-29 11:52:24

标签: hibernate spring-boot

我正在查看文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

...,并尝试创建一些简单的集成测试。我想在启动时用一些常用数据填充数据库。但是我有一些无法理解的“奇怪”行为,即data-$ {platform} .sql文件。

application.properties:

spring.jpa.database=H2
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

spring.datasource.initialize=true
spring.datasource.initialization-mode=always
spring.datasource.platform=h2
spring.datasource.url = jdbc:h2:mem:
spring.datasource.driver-class-name = org.h2.Driver

因此,我有schema-h2.sql用于创建架构;由于某种原因,似乎不会由休眠自动生成。我有@RunWith(SpringRunner.class) @DataJpaTest @Transactional测试,它将声明表中的记录数。如果表为空,则测试失败。现在,对我来说,奇怪的是什么?

  • 发现并执行了文件data-h2.sql。我怎么知道如果我在其sql语句中输入错误,则会出现运行时异常。因此它被处理了。但是,即使该语句运行,该表在测试中也将为空。为什么?它没有提交吗?我试图添加提交;进入文件,但这没有帮助。没有定义测试前的回滚或任何东西。

    • 另一方面,也执行了通过重命名data-h2.sql创建的文件import.sql,并且在执行测试时表中的数据可用。

那么处理这两个文件的行为有何不同?我想在休眠状态下使用springboot功能,但是它的正确用法是什么?

0 个答案:

没有答案