Hibernate:hbm2ddl反转列顺序

Ond*_*žka 5 hibernate hbm2ddl

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

如何使它按照与类相同的顺序创建列?

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

但是,我能否至少要求Hibernate将PK和FK列作为第一列?

Hibernate 4.0.0(JBoss AS 7.1.2)MySQL 5.1.x.

Sta*_*sev 9

Hibernate团队表示这是一个已知的限制,并且无法设置顺序.但是在生产中使用Hibernate时不应该依赖hbm2ddl,这是非常有限的,例如它可以添加列,但它不能删除它.相反,人们通常使用LiquiBaseFlyWayDbDeploy等工具创建数据库迁移,这使您可以更灵活地控制架构更新.

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