首页 > 解决方案 > 使用 Spring Boot 时如何防止 HSQLDB 在应用程序运行之间持久化数据?

问题描述

我正在运行 Spring Boot/Web 应用程序,并且在原型设计期间使用嵌入式 HSQLDB。作为其中的一部分,我不想在运行之间保留数据。我希望系统中的唯一数据是来自这些脚本的数据。

如何修改我的配置以实现这一目标?

@Configuration
public class RepoConfig {

    @Bean
    public DataSource dataSource() {
        EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
        EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL)
                .addScript("classpath:table.sql")
                .addScript("classpath:data.sql")
                .build()
            ;
        return db;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        return jdbcTemplate;
    }

}

我尝试在创建表之前添加一个脚本来删除表,比如

删除表 mytablename ;

但我不断收到错误:

用户缺少权限或找不到对象:MYTABLENAME


PS:

标签: spring-boothsqldb

解决方案


您可以使用以下配置来做到这一点:

spring.jpa.hibernate.ddl-auto = create-drop

您可以找到有关使用 Hibernate 初始化数据库的更多详细信息

或者你也可以设置这个属性spring.datasource.data

spring.datasource.data=drop.sql,data.sql

那么这些文件应该在

src/main/resources/drop.sql
src/main/resources/data.sql

推荐阅读