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

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

  • 弹簧引导启动的Web
  • 弹簧引导起动数据JPA

该应用程序只有一个域类Post.java 。 因此,有一个RestController和一个DAO。 数据应该保存在基于文件的hsql db中。

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

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

application.properties

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

的pom.xml

   org.springframework.boot spring-boot-starter-web    org.springframework.boot spring-boot-starter-data-jpa    com.h2database h2 1.4.179  

PostDAO.java

 public interface PostDAO extends JpaRepository{ public Post findByMessage(String message); } 

Post.java

 @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; } } 

如果使用嵌入式数据库,则spring.jpa.hibernate.ddl-auto的默认值为create-drop 。 你可能希望它是空的,或者只是validatenone可能工作得很好,但我认为hibernate不赞成)。