有什么区别spring.jpa.hibernate.hbm2ddl
和 spring.jpa.hibernate.ddl
?
我在这个问题中找到了:What are the possible values of spring.datasource.initialization-mode? OP 在属性中同时使用两者,但它似乎是 hbm2ddl
的起源是直接 hibernate 而不是 Spring Data Jpa。
尽管如此,阅读 answer从另一个 OP 来看,它看起来只是直通。
然而,在我们使用 mariadb 的商业项目中,当我们没有使用 优雅地关闭我们的 Spring Boot 应用程序时spring.jpa.hibernate.hbm2ddl.auto=create
,当应用程序再次运行时,它会删除旧数据并从头开始创建所有内容。另一方面与 spring.jpa.hibernate.ddl.auto=create
每第二次运行(在没有正常关闭应用程序之后)都会导致关键约束异常(DB 在创建之前不是 dropper)
最佳答案
您可以使用
spring.jpa.*
显式配置 JPA 设置。特性。例如,要创建和删除表,您可以在 application.properties 中添加以下行:spring.jpa.hibernate.ddl-auto=create-drop
Hibernate 自己的内部属性名称(如果你碰巧记得更好的话)是 hibernate.hbm2ddl.auto
.spring.jpa.hibernate.ddl-auto
这其实是"hibernate.hbm2ddl.auto"
的快捷方式属性(property)。默认为
"create-drop"
当使用嵌入式数据库并且未检测到模式管理器时。否则,默认为 "none"
.schema.sql
和 data.sql
, 分别。schema-${platform}.sql
和 data-${platform}.sql
文件(如果存在),其中平台是 spring.datasource.platform
的值.关于java - spring.jpa.hibernate.hbm2ddl 和 spring.jpa.hibernate.ddl 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060870/