java - Spring 启动和 hibernate : print/log DDL

标签 java spring hibernate jpa spring-boot

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

似乎可以对此进行一些控制的唯一属性如下

org.hibernate.tool.hbm2ddl=validate|update|create|create-drop|none

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

我是经典的spring应用,以前使用hibernate的SchemaExport类来打印DDL。

SchemaExport schemaExport = new SchemaExport(cfg);
schemaExport.execute(true, false, false, false);

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

最佳答案

这就是我的工作......

首先我进行实体更改,然后将它们设置为:

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

然后

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

关于java - Spring 启动和 hibernate : print/log DDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048199/

相关文章:

java - Spring 启动 : Cors policy missing 'access-control-allow-origin'

hibernate - JPA2 中是否有 OnDelete 的等效注释

java - 我需要将 JBoss 工具添加到我的 Eclipse,但我使用的是 springtoolsuite (STS)

java - @OneToMany 中未填充父实体。 hibernate 双向

java - 使用大小为 30K 的数组进行测试时,使用 HashMap 实现的代码失败

JAVA 8 : RowMapper

java - Hibernate中热切获取是什么意思

java - 当我只做一个列表时,为什么 Hibernate 会删除我的集合条目?

java - 使用maven构建geoserver(monitor-hibernate)

java - 如何使用 Java 在 Android Studio 的 WebView 中提供网站链接?