【发布时间】:2011-02-23 15:45:32
【问题描述】:
我正在寻找在 Hibernate 自动更新表时获取 SQL 更新脚本的方法。
我仅在开发环境中使用hibernate.hbm2ddl.auto=update,并且我需要更新生产表的 SQL 脚本。
我希望这些 txt 格式的 SQL 脚本用于修订和潜在的编辑。
如何做到这一点? 感谢您的建议。
【问题讨论】:
我正在寻找在 Hibernate 自动更新表时获取 SQL 更新脚本的方法。
我仅在开发环境中使用hibernate.hbm2ddl.auto=update,并且我需要更新生产表的 SQL 脚本。
我希望这些 txt 格式的 SQL 脚本用于修订和潜在的编辑。
如何做到这一点? 感谢您的建议。
【问题讨论】:
org.hibernate.cfg.Configuration 类有方法:
public java.lang.String[] generateSchemaUpdateScript( Dialect, DatabaseMetadata)
生成所需更新脚本的内容。
我刚刚在 grails 中实现了这个:
configuration = new DefaultGrailsDomainConfiguration(
grailsApplication: grailsApplication,
properties: props)
//this extends hibernate config
Connection c = SessionFactoryUtils.getDataSource(sessionFactory).getConnection(props.'hibernate.connection.username', props.'hibernate.connection.password')
<br/>md = new DatabaseMetadata(c, DialectFactory.buildDialect(props.'hibernate.dialect'))
configuration.generateSchemaUpdateScript(DialectFactory.buildDialect(props.'hibernate.dialect'), md)
)
check SchemaExport script in grails, for further information, it uses hibernate to generate schema.
(我不得不将其实现为服务,因为我们有外部域模型)
【讨论】: