【问题标题】:How to prevent HSQLDB from persisting data between applications runs when using Spring Boot?使用 Spring Boot 时如何防止 HSQLDB 在应用程序运行之间持久化数据?
【发布时间】:2021-08-13 01:23:47
【问题描述】:

我正在运行 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;
    }

}

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

DROP TABLE mytablename ;

但我一直收到错误:

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


PS:

  • Spring Boot 2.5.0
  • HSQLDB 2.6.0

【问题讨论】:

标签: spring-boot hsqldb


【解决方案1】:

您可以通过以下配置做到这一点:

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

您可以在Initialize a Database Using Hibernate找到更多详细信息

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

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

那么这些文件应该在

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

【讨论】:

  • 好的,但是如果我不使用 Hibernate?例如原始 JDBC 或 iBatis
  • 当然,你可以通过其他方式,让我更新这个答案
  • @Sled 我更新了我的答案,希望对你有所帮助。
猜你喜欢
  • 2017-08-10
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
相关资源
最近更新 更多