我有一个项目,我们曾经依靠 hibernate 来更新数据库的更改(hibernate.hbm2ddl.auto=update)......即使在产品上...... 我正在迁移它以使用 liquibase。
我唯一担心的是,不是每个人都是我团队中的 sql 专家,所以我正在寻找一种简单的方法来生成 hibernate 在更新数据库时会完成的 sql 脚本。
我们都在使用 Intellij IDEA,但找不到这个功能。
你知道有什么工具可以做到这一点吗?
谢谢
最佳答案
要实际显示 Hibernate 从映射中生成的脚本,您可以:
按照 Andrei I 的建议,将这两行添加到您的 application.properties:
spring.jpa.hibernate.ddl-auto=validate logging.level.org.hibernate.tool.hbm2ddl=DEBUG
Hibernate 4.3 的来源:SchemaUpdate.java
或使用以下代码手动生成这些脚本:
LocalSessionFactoryBuilder sessionFactory = new LocalSessionFactoryBuilder(dataSource); sessionFactory.scanPackages("your.package.containing.entities"); Dialect dialect = new MySQL5Dialect(); // select your dialect DatabaseMetadata metadata = new DatabaseMetadata(dataSource.getConnection(), dialect, sessionFactory); List<SchemaUpdateScript> scripts = sessionFactory.generateSchemaUpdateScriptList(dialect, metadata); Formatter formatter = FormatStyle.DDL.getFormatter(); for (SchemaUpdateScript script : scripts) { System.err.println(formatter.format(script.getScript()) + ";"); }
您甚至可以在@Test 中添加此代码,如 here 所述.
祝你好运!
关于java - 使用 Hibernate/Spring 生成数据库更新脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19942217/