【问题标题】:Hibernate: Reversed column order by hbm2ddl [duplicate]休眠:hbm2ddl 反转列顺序 [重复]
【发布时间】:2012-09-08 04:16:38
【问题描述】:

我让 hbm2ddl 为我创建表(用于开发目的),并且列与类中的字段顺序相反。

如何让它以与类相同的顺序创建列?

我认为 Java 类不存储字段的顺序,所以 Hibernate 根本不知道源代码中的顺序是什么(如果我考虑更复杂的情况,这似乎是合乎逻辑的)。

但是,我至少可以要求 Hibernate 将 PK 和 FK 列作为第一列吗?

休眠 4.0.0 (JBoss AS 7.1.2) MySQL 5.1.x

【问题讨论】:

  • 我也有这个问题。我只是导出数据库模式,手动更改列顺序并将其导入回来。但如果有解决方案,我会非常有兴趣了解它。
  • 我创建了HHH-7612 来解决第二个问题。

标签: hibernate hbm2ddl


【解决方案1】:

Hibernate 团队说它是known limitation,并且无法设置顺序。但是在生产中使用 Hibernate 时不应该依赖 hbm2ddl,这是非常有限的,例如它可以添加列,但不能删除它。相反,人们通常使用LiquiBaseFlyWayDbDeploy 等工具创建数据库迁移,这为您提供了更大的灵活性和对模式更新的控制。

描述这种方法如何提供帮助:假设您有一个 UAT 环境并且您刚刚更新了架构 - 您想向现有列添加非空约束。使用 hbm2ddl 这是不可能的,您将强制您的 QA 从头开始​​重新创建数据库。使用上述工具,您需要添加一个 SQL 文件,这些工具将运行这个新脚本,分别更新架构。您可能还需要设置 hbm2ddl=verify 以确保当前数据库架构是最新的,反之亦然 - 休眠映射是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 2011-04-13
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多