【问题标题】:H2 schema still generated when spring.jpa.generate-ddl=false当 spring.jpa.generate-ddl=false 时仍然生成 H2 模式
【发布时间】:2019-04-08 14:15:58
【问题描述】:

我正在使用 Spring Boot 2.1.3 和内存数据库中的 H2 进行测试。当我运行测试时,即使我指定了以下属性,也会生成架构。

spring.jpa.generate-ddl=false

好像是因为Spring Boot在使用H2的时候默认了如下属性

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

这优先于spring.jpa.generate-ddl=false

这是一个错误吗?

【问题讨论】:

  • 否,因为两者是不同的属性。将spring.jpa.hibernate.ddl-auto 属性设置为none 然后它应该优先。
  • 出于好奇,您为什么希望为内存数据库生成架构?

标签: java spring hibernate spring-boot jpa


【解决方案1】:

Spring Boot Features 文档第 11.3.3 章中描述了此行为。创建和删除 JPA 数据库:

默认情况下,DDL 执行(或验证)会延迟到 ApplicationContext 已开始。还有一个 spring.jpa.generate-ddl 标志,但在休眠时不使用 自动配置处于活动状态,因为ddl-auto 设置更多 细粒度。

因为如果使用 Hibernate,则默认设置属性 spring.jpa.hibernate.ddl-auto,如果使用 Hibernate,则忽略标志 spring.jpa.generate-ddl(至少对于 H2 内存数据库)

【讨论】:

    猜你喜欢
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多