<property name="hibernate.hbm2ddl.auto">update</property>
我可以创建我的数据库模式,它会自动添加属性、约束、键等……但是更新数据库模式呢?如果我从我的实体中删除一些属性,hibernate 不会删除它,或者如果我更改了一些约束,hibernate 不会触及已经创建的约束...
那么,有没有办法让hibernate真正更新数据库模式呢?
谢谢。
我们为自己创建了一个工具,它创建必要的数据库列和表删除,并将这些删除添加到为数据库更新生成的 SQL 中。但是我们必须在 SchemaUpdate 生成中添加一些额外的东西才能使其工作:
@Column(length)
有所不同。但总而言之,这样无法创建完整的工具,因为如果在代码中重命名列怎么办?如果类型以一种无法自动转换的方式更改(bool to date?)怎么办?如果您无权访问重构历史记录,则无法始终传播更改。
不,那里没有。hbm2ddl 并不意味着对您的架构迁移进行完整的管理。最好仅将它用于对架构进行附加更改并手动编辑(生成的脚本)用于其他任何内容。
我们目前使用liquibase以与数据库无关的方式进行自动数据库更改。可以直接从您的休眠注释中提取 liquibase 命令,但我认为不存在这样的工具,因此您可能必须自己做。
Hibernate 提供了一个名为 SchemaUpdate 的类,它能够将一组 hibernate 映射与数据库模式同步
旧帖子,但让社区知道它是否好:)