Spring Boot:H2数据库未保存到文件

7

我正在尝试使用Spring Boot将H2内存数据库持久化到文件中,以便重复使用其中的数据。

不幸的是,指定数据源URL的方法如下:

spring.datasource.url = jdbc:h2:file:~/WeatherDB;FILE_LOCK=FS

(完整的application.properties)

对我来说没有用。我在我的硬盘上找不到由H2生成的文件(此外,在重新启动服务器后,保存的数据不可用)。

为了更好地理解,我创建了一个示例项目,可以在Bitbucket上找到。

因此,无论是从IDE中使用gradle run运行应用程序还是从jar包中打包后运行应用程序似乎都没有区别。

需要哪些配置选项才能持久化和重复使用H2数据库?

更新:

我意识到有一个配置选项的执行器端点在http://localhost:8080/configprops显示。

"spring.datasource.CONFIGURATION_PROPERTIES": {

    "prefix": "spring.datasource",
    "properties": {
        "schema": null,
        "data": null,
        "xa": {
            "dataSourceClassName": null,
            "properties": { }
        },
        "separator": ";",
        "url": "jdbc:h2:file:~/WeatherDB",
        "platform": "all",
        "continueOnError": false,
        "jndiName": null,
        "sqlScriptEncoding": null,
        "password": "******",
        "driverClassName": "org.h2.Driver",
        "initialize": true,
        "username": "sa"
    }
},

但是我在硬盘上找不到名为WeatherDB的文件,而且在重新启动服务器后也没有任何数据可用。

非常欢迎任何建议;-)

2个回答

12

由于模式迁移将其设置为更新,表被删除了,这个方法对我有帮助。

application.properties
spring.jpa.hibernate.ddl-auto=update

可以了,谢谢!但是这些数据存储在哪里呢?是在文件中吗?还是我可以通过 SQL Developer 连接到创建的数据库来查看它们? - Adir D

3
你的application.properties文件没有被识别。请替换。
compile "org.springframework.data:spring-data-jpa:1.7.2.RELEASE"
compile "org.hibernate:hibernate-entitymanager:4.3.8.Final"

使用

compile "org.springframework.boot:spring-boot-starter-data-jpa"

嗨,非常感谢您的回答。在我看来,这应该有所不同,因为文档说如果在“类路径/配置包”中找不到application.config,则会在类路径根目录中查找。(http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html)无论如何,我尝试了一下,但它没有起作用:( - Markus
你是对的。我将你的应用程序与我的进行了比较,发现你需要使用Spring Boot JPA依赖项,而不是直接使用Spring Data JPA。我已经更新了我的答案以反映这一点。我已经检查了这个更改,并且现在它可以正常工作了。 - manish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接