H2 は、;MODE=MYSQL を使用し、org.hibernate.dialect.MySQL5Dialect のダイアレクトで hibernate を使用する場合、MySQL5 ダイアレクト用に hibernate によって生成されるインデックス/FK 構文をサポートしていないようです。
ここでの私の目標は、SQL スクリプトのセットを 1 つ用意し、ORM 部分に hibernate を使用することです。MySQL 5.5 ではすべて正常に動作しますが、ユニット テストやアプリのデモ バージョンの起動などに H2 を使用しようとすると、以下に示すように、休止状態で生成された alter table ステートメントから何百ものエラーが発生します。残念ながら、休止状態でステートメントの生成方法を変更する方法を見つけることができませんでしたが、それもオプションになる可能性があります。org.hibernate.dialect.H2Dialect を使用してみましたが、より深刻なエラーが発生するため、うまくいかないと思います。
alter table SAM_PUBLISHEDSECUREDIP_T
add index FK1EDEA25B9482C945 (ASSESSMENTID),
add constraint FK1EDEA25B9482C945 foreign key (ASSESSMENTID)
references SAM_PUBLISHEDASSESSMENT_T (ID)
H2 では次のようなエラーが発生します。
org.h2.jdbc.JdbcSQLException: SQL ステートメントの構文エラー "ALTER TABLE SAM_PUBLISHEDSECUREDIP_T ADD INDEX FK1EDEA25B9482C945 (ASSESSMENTID),[*] ADD CONSTRAINT FK1EDEA25B9482C945 FOREIGN KEY (ASSESSMENTID) REFERENCES SAM_PUBLISHEDASSESSMENT_T (ID) "; SQL ステートメント: テーブルの変更 SAM_PUBLISHEDSECUREDIP_T インデックス FK1EDEA25B9482C945 (ASSESSMENTID) の追加、制約 FK1EDEA25B9482C945 の追加 外部キー (ASSESSMENTID) 参照 SAM_PUBLISHEDASSESSMENT_T (ID) [42000-172]
注: 私は H2 のパッチを作成して提供することにオープンですが、そのコードベースのどこを調べるかについていくつかのヒントを使用できます。