Java 基于文件的h2持久化,但未在Spring Boot中加载

Java 基于文件的h2持久化,但未在Spring Boot中加载,java,maven,hsqldb,h2,spring-boot,Java,Maven,Hsqldb,H2,Spring Boot,我制作了一个基于Spring Boot的小应用程序: SpringBootStarterWeb spring引导启动器数据jpa 应用程序只有一个域类Post.java。 因此,有一个RestController和一个DAO。 数据应该保存在基于文件的hsql数据库中 当应用程序运行时,一切似乎都正常。数据被存储。 h2文件已创建并包含insert语句 但是,当我关闭应用程序并再次启动它时。没有加载任何数据。(好像创建了一个全新的db文件,它覆盖了旧的db文件) 应用程序属性 spring.

我制作了一个基于Spring Boot的小应用程序:

  • SpringBootStarterWeb
  • spring引导启动器数据jpa
应用程序只有一个域类
Post.java
。 因此,有一个RestController和一个DAO。 数据应该保存在基于文件的hsql数据库中

当应用程序运行时,一切似乎都正常。数据被存储。 h2文件已创建并包含insert语句

但是,当我关闭应用程序并再次启动它时。没有加载任何数据。(好像创建了一个全新的db文件,它覆盖了旧的db文件)

应用程序属性

spring.datasource.url = jdbc:h2:file:~/testdb
spring.datasource.username = sa
spring.datasource.password = sa
spring.datasource.driverClassName = org.h2.Driver
pom.xml

<!-- Spring Boot Web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot Data JPA -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- H2 DB -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.179</version>
</dependency>

如果使用嵌入式数据库,
spring.jpa.hibernate.ddl auto
的默认值是
create drop
。您可能希望它是空的,或者只是
validate
none
也可以工作,但我认为hibernate不赞成这样做)。

就是这样。谢谢尽管我假设Spring会自动检测到正确的行为:您是否可以提供更新的pom.xml、application.properties以及为使其正常工作所做的任何其他更改。谢谢。在这种情况下,您只需要将
spring.jpa.hibernate.ddl auto=validate
添加到application.properties文件中@斯基拉基语
public interface PostDAO extends JpaRepository<Post, Integer>{
    public Post findByMessage(String message);
}
@Entity
public class Post {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String message;

    public Post(){
    }

    public Post(String message) {
        super();
        this.message = message;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}