当前位置: 首页 > 面试题库 >

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

曾宏毅
2023-03-14
问题内容

我基于Spring Boot创建了一个小应用程序:

  • 弹簧启动启动器网站
  • 弹簧启动启动器数据jpa

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

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

但是,当我终止该应用程序并再次启动它时。没有数据加载。(好像创建了一个全新的db文件,它覆盖了旧的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

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

问题答案:

如果使用嵌入式数据库,spring.jpa.hibernate.ddl-auto则默认为create- drop。您可能希望它为空,或者只是validatenone可能也可以工作,但是我认为冬眠时代已弃用)。



 类似资料:
  • 我制作了一个基于Spring Boot的小应用程序: spring boot starter web 应用程序只有一个域类Post。java。因此,有一个RestController和一个DAO。数据应该保存在基于文件的hsql db中。 当应用程序运行时,一切看起来都很好。存储数据。h2文件已创建并包含insert语句。 但是,当我关闭应用程序并再次启动它时。未加载任何数据。(就像创建了一个全新

  • 如何使用h2database配置spring boot,以便在每次重新启动时重用数据库。 这是我申请表中唯一的一行。属性文件 spring.jpa.databaseorg.hibernate.dialect.方言

  • 问题内容: 我将创建一个或多或少具有以下形式的结构: 我想将这些值写入文件并在后续调用中读取它们。我最初的计划是将它们读入映射并使用键(路径)查找值(哈希和LastModified)。Go中有一种巧妙的方法吗? 如果没有,您可以推荐哪种文件格式?我已经阅读并尝试了先前项目中的一些键/值文件存储,但并未使用Go进行试验。现在,我的要求可能非常简单,因此大型数据库服务器系统会显得过大。我只想要我可以快

  • 我想保留一个文件,即使在卸载了我的应用程序在Android11。多亏了Android10和11关于存储的更新,我不能再这样做了。另外,我不想使用数据备份或远程服务器,它必须离线。有什么建议吗?

  • 我的应用程序有3个组件, 1) 一种面向用户的组件,接收请求并将其存储到数据库中。2)一个后端组件,从数据库中读取数据,进行处理并将其发送到外部系统。3) 存储用户输入的数据库 我如何测试流程是这样的:用户输入数据- 注意:我尝试使用ddl auto:update,但它不起作用。

  • 我的Spring主课:- 我的痛苦。属性 我在执行保存函数时的控制台输出:- 不要忘记我的集成测试类:=