tôi đã thực hiện một ứng dụng nhỏ dựa trên mùa xuân Boot:tập tin dựa h2 vẫn kiên trì nhưng không được nạp trong mùa xuân Boot
- mùa xuân-boot-khởi-web
- mùa xuân-boot-khởi-data-JPA
Ứng dụng này chỉ đơn giản là một lớp miền Post.java
. Theo đó có một RestController và một DAO. Dữ liệu được cho là tồn tại trong một tệp dựa trên db hsql.
Khi ứng dụng đang chạy mọi thứ có vẻ ổn. Dữ liệu được lưu trữ. Tệp h2 được tạo và chứa các câu lệnh chèn.
Tuy nhiên, khi tôi xóa ứng dụng và khởi động lại lần thứ hai. Không có dữ liệu nào được tải. (Như thể một tệp db hoàn toàn mới đã được tạo, ghi đè tệp cũ).
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
<!-- 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>
PostDAO.java
public interface PostDAO extends JpaRepository<Post, Integer>{
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;
}
}
Bạn có thể vui lòng cung cấp tệp pom.xml, application.properties được cập nhật và bất kỳ thay đổi nào khác bạn đã thực hiện để làm việc này. Cảm ơn. –
Trong trường hợp này, bạn chỉ cần thêm 'spring.jpa.hibernate.ddl-auto = validate' vào tệp application.properties của bạn. @SrkiRakic – qiubix