0

Hibernateキーと外部キーで次の問題が発生します。

Webアプリケーションを最初にデプロイしたとき、Hibernateは(他の多くのパラメーターの中でも)次のパラメーターで構成されていました。

  • databasePlatform「汎用」(エンジン固有ではない)方言に設定しorg.hibernate.dialect.MySQLDialectます。
  • hibernate.hbm2ddl.autoに設定update

デフォルトのエンジンはであったMyISAMため、HibernateMyISAMはインデックスを使用してテーブルを論理的に作成し、外部キーの作成を無視しました(MyISAMこのような制約はサポートされていないため)。

すべてのテーブルをに移行したいのでInnoDB、Hibernateに欠落している外部キーを自動的に作成させたいと思います。残念ながら、Hibernateはインデックスを探しているようです。

  • インデックスが存在する場合、Hibernateは対応する外部キーを作成しません。
  • インデックスを削除すると、Hibernateはインデックスと外部キーの両方を作成します。

スキーマ内のすべてのインデックスを削除したくないので、インデックスが作成されている場合でも、Hibernateに外部キーを作成するように指示する方法を知っていますか?

ありがとうございました。

4

1 に答える 1

0

これは開発データベースであるため、休止状態でスキーマ全体を再作成できるようにすることをお勧めします。

ただし、失いたくないテスト データが多数ある場合は、利用可能な MySQL コマンドを使用してスクリプトを作成し、Hibernate のすべてのインデックスを自動的に削除してそれらを再作成します。必要なコマンドは次のとおりです。

show tables;

show index from `table_name`;

drop index `index_name` on `table_name`;

これらをなんらかの形式のプログラム スクリプト (シェル、Python、またはビルド中のアプリケーションなど) に整理すれば、準備完了です。

于 2013-01-03T13:48:24.277 に答える