我正在查看文档:
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语句中输入错误,则会出现运行时异常。因此它被处理了。但是,即使该语句运行,该表在测试中也将为空。为什么?它没有提交吗?我试图添加提交;进入文件,但这没有帮助。没有定义测试前的回滚或任何东西。
那么处理这两个文件的行为有何不同?我想在休眠状态下使用springboot功能,但是它的正确用法是什么?