2

したがって、Hibernate によって管理されるクラスの 1 つに、次のプロパティ定義があります。

@ManyToOne(optional = false)
private Company company;

Hibernate は、MySQL の db スキーマを作成するときに、このフィールドの外部キーとインデックスを自動的に作成します。

KEY `FK334B8608339B7FC2` (`company_id`),
CONSTRAINT `FK334B8608339B7FC2` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`)

ご覧のとおり、hibernate はインデックス (KEY) と外部キー制約の両方に同じ名前を使用しています。これは MySQL を悩ませているようには見えませんが、他のツール ( mysqldiff など) を使用しようとすると、制約が重複していると不平を言います (FK とインデックスが同じ名前であるため)。

これは休止状態のエラー (同じ名前の 2 つの異なるアイテムを生成してはならない) ですか、それともツールの問題で、これらが重複していると誤って認識していますか?

参考: Hibernate 3.4.0.GA と MySQL 5.1.44 を使用しています。

ありがとう!

ジョン。

4

1 に答える 1

2

私の経験では、休止状態が FK フィールドに外部キーとインデックスをそれぞれ異なる名前で作成するのは通常です。なぜ休止状態が同じ名前を奇妙に生成するのか理解できません。

またはを使用して@ForeignKey(name="")、外部キーまたはインデックス名を変更できます。そうすれば、このトラブルは避けられます。@Index@IndexColumn

しかし、バグがあるようです@OneToOne

于 2012-07-13T04:07:25.617 に答える