繁体   English   中英

是否有hibernate hbm2ddl创建的liquibase问题?

[英]is there any liquibase issue with hibernate hbm2ddl create?

我对liquibase和hibernate有一个轻微的问题。我希望hibernate在hbm2ddl设置为create时创建模式,然后让liquibase用sql脚本文件填充数据库。
我注意到,在启用验证时,它的行为与描述一样,并且在创建它时并不特别在测试环境中使用hsqldb(在内存中)。我似乎是盲目的。

有没有办法让我的hsqldb预期的工作,因为在hibernate创建后填充数据库。 谢谢你读这个。

Liquibase最好用作hbm2ddl的替代品。 这样,当数据库处于适合该数据的状态时,您可以使用数据,并且以后的更改集可以升级插入的数据以及其他更改。 如果先运行hbm2ddl,然后使用liquibase填充数据,则需要始终对插入数据结构进行更改。

可以使用hibernate和liquibase的一种方法是在开发期间使用ant或maven下的liquibase diff工具根据数据库和hibernate模型之间的差异附加到changelog文件。 确保检查它正在尝试做什么,因为它并不总是你所期望的(它决定放弃并添加一列而不是重命名它)。 一旦创建了changelog文件,就可以像任何changelog文件一样运行它,例如通过在app启动时将其传递给liquibase spring bean。 您不需要同时使用hbm2ddl和liquibase,因为liquibase使用hbm2ddl来生成liquibase比较当前数据库的hibernate“数据库”。

有了这个,你的步骤是:

  1. 更改您的休眠模型
  2. 在hibernate和现有数据库之间运行liquibase diff
  3. 检查您的新liquibase changeSets
  4. 对数据库执行liquibase脚本

唯一的问题可能是maven不支持hibernate diff工具,就像在ant和命令行中一样,特别是在1.9中。

如果您不想处理liquibase diff工具,则可以始终手动将changeSets附加到changelog文件中以进行每个更改。 XML格式旨在易于手动使用。 在这种情况下,您的步骤是:

  1. 更改您的休眠模型
  2. 将所需的changeSet添加到您的changelog文件中
  3. 对数据库执行liquibase脚本
  4. 测试并重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM