Java 基于文件的h2持久化,但未在Spring Boot中加载
我制作了一个基于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.
- 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;
}
}