当前位置: 首页 > 知识库问答 >
问题:

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

祁嘉木
2023-03-14

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

  • spring boot starter web

应用程序只有一个域类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);
}

邮递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;
    }
}

共有1个答案

糜宜民
2023-03-14

如果您使用嵌入式数据库,那么spring.jpa.hibernate.ddl-auto的默认值是create-drop。您可能希望它为空,或者只是验证no也可以工作,但我认为这已被hibernate弃用)。

 类似资料:
  • 问题内容: 我基于Spring Boot创建了一个小应用程序: 弹簧启动启动器网站 弹簧启动启动器数据jpa 该应用程序仅具有一个域类。因此,有一个RestController和一个DAO。该数据应保留在基于文件的hsql db中。 当应用程序运行时,一切似乎都很好。数据已存储。h2文件已创建并包含insert语句。 但是,当我终止该应用程序并再次启动它时。没有数据加载。(好像创建了一个全新的db

  • 本文向大家介绍基于js文件加载优化(详解),包括了基于js文件加载优化(详解)的使用技巧和注意事项,需要的朋友参考一下 在js引擎部分,我们可以了解到,当渲染引擎解析到script标签时,会将控制权给JS引擎,如果script加载的是外部资源,则需要等待下载完后才能执行。 所以,在这里,我们可以对其进行很多优化工作。 放置在BODY底部 为了让渲染引擎能够及早的将DOM树给渲染出来,我们需要将sc

  • 问题内容: 我有一个托管bean,其中包含当前页面的实体对象列表。在我创建一个新对象并在事务中使用persist()将其持久保存到数据库之后;在另一个事务中,当我调用merge时(由于该实体由于先前的事务提交而处于分离状态);实体管理器无法在持久性上下文中找到对象,并向数据库抛出选择查询。我是否缺少某些东西,或者是正常行为? 更新:当我使用mysql数据库和自动生成的ID列时,存在上述问题。当我在

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

  • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示

  • 问题内容: 我遇到了使用骨干网.js的情况,那里有一组模型,以及一些有关模型的其他信息。例如,假设我要返回一个金额列表:它们具有与每个模型关联的数量。现在假设每个数量的单位总是相同的:说夸脱。然后,从服务中获取的json对象可能类似于: 现在,骨干集合没有将这种元数据与集合本地关联的真正机制,但有人向我提出了以下问题:在集合上设置属性-可以通过样式函数扩展集合的骨干js-很好的解决方案。但是,自然