5

hbm2ddl に (開発目的で) テーブルを作成させ、列はクラス内のフィールドの逆順になっています。

クラスと同じ順序で列を作成するにはどうすればよいですか?

Java クラスはフィールドの順序を保存しないと思うので、Hibernate はソース内の順序を単純に認識していません (より複雑なケースを考えると、これは論理的に思えます)。

しかし、少なくとも Hibernate に PK 列と FK 列を最初のものとして配置するように依頼できますか?

ハイバネート 4.0.0 (JBoss AS 7.1.2) MySQL 5.1.x

4

1 に答える 1

9

Hibernateチームは、これは既知の制限であり、順序を設定することは不可能であると述べています。ただし、本番環境でHibernateを使用する場合は、hbm2ddlに依存しないでください。たとえば、列を追加することはできますが、削除することはできません。代わりに、人々は通常、 LiquiBaseFlyWayDbDeployなどのツールを使用してDB移行を作成します。これにより、スキーマの更新に対する柔軟性と制御が向上します。

このアプローチがどのように役立つかを説明するために:UAT環境があり、スキーマを更新したとしましょう。既存の列にnull以外の制約を追加したいとします。hbm2ddlではそれは不可能であり、QAにデータベースを最初から再作成するように強制します。上記のツールを使用してSQLファイルを追加する必要があり、それらのツールはそれぞれスキーマを更新するこの新しいスクリプトを実行します。また、hbm2ddl = verifyを設定して、現在のDBスキーマが最新であること、またはその逆であることを確認することもできます。Hibernateマッピングは正しいです。

于 2012-09-15T13:49:49.973 に答える