首页 > 解决方案 > 为什么每次启动 Spring Boot 应用程序时我的 h2 数据库都是空的?

问题描述

我在具有 spring-boot-starter-data-jpa 依赖项的 maven 项目中使用 spring boot。

在我的 application.yml 文件中,我有:

spring.datasource.url: jdbc:h2:./data;DB_CLOSE_ON_EXIT=FALSE

我还有一个 DataPopulation 类:

if (userRepository.findAll().iterator().hasNext()) {
  // Database already has users..
}

其中 userRepository 是 CrudRepository 实例。

每次启动时,userRepository 都不返回任何用户,无论应用程序上次运行时添加了多少用户。

我可以看到 data.mv.db 和 data.trace.db 文件已创建且不为空。

为什么我的数据库在启动时总是空的?我错过了什么?

标签: javaspring-boothibernatejpah2

解决方案


./data路径让我认为每次构建应用程序时数据库都会被删除,这.意味着当前目录。因此,您可以使用与您的用户主文件夹相关的数据库文件,由~:指示~/data。您可能还想:file在 JDBC URL 中使用:

spring.datasource.url: jdbc:h2:file:~/data;DB_CLOSE_ON_EXIT=FALSE

如果需要,请查看 H2功能文档


推荐阅读