Spring启动和Hibernate:打印/日志DDL

ber*_*tvh 12 java spring hibernate jpa spring-boot

在我添加了一个或多个带有数据库映射(JPA/hibernate)的类之后,我希望Hibernate打印出必要的模式更新,以便我可以在数据库上执行它们(例如通过FlyWay).我不希望更新自动执行.

唯一能够对此进行控制的属性如下

org.hibernate.tool.hbm2ddl=validate|update|create|create-drop|none
Run Code Online (Sandbox Code Playgroud)

我不想自动更新/更改任何内容.我想将此设置为验证或无.当我这样做时,我无法看到生成的架构.

我是经典的spring应用程序,我以前用hibernate SchemaExport类来打印DDL.

SchemaExport schemaExport = new SchemaExport(cfg);
schemaExport.execute(true, false, false, false);
Run Code Online (Sandbox Code Playgroud)

我可以在Spring Boot中使用类似的东西吗?

Chr*_*ory 22

这就是我做的......

首先,我对我的实体进行了更改,然后将其设置为:

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)

然后

  1. 重新运行我的应用程序,让hibernate对数据库进行更改.
  2. 进入日志并复制hibernate用于更新db的sql
  3. 将该sql粘贴到新的Flyway脚本中
  4. Shudown Boot App
  5. 删除本地数据库
  6. 将ddl-auto更改回验证
  7. 重启Boot App
  8. 测试以确保Flyway进行了正确的更新.Hibernate和Flyway现在将同步.

  • 您还应该在`application.properties`中包含`logging.level.org.hibernate.tool.hbm2ddl = DEBUG`,否则这些日志永远不会出现.请注意,这只允许与架构更新相关的调试日志,而不是所有可能会溢出控制台的调试日志. (4认同)