4

Hibernateのドキュメントを読んでいて、このページで警告に遭遇しました

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e1150

「警告Hibernateチームは、このような構成が根本的に間違っていると常に感じていました。この機能を使用する前に、データモデルを修正するように努めてください。」部分識別子の生成に関して

誰かが私にこれの実際の何が悪いのかもう少し詳しく説明できますか?Hibernateが生成された値を軽視するのはなぜですか?これには、Hibernateの自動インクリメント値が含まれていますか?

ありがとう、

4

2 に答える 2

2

警告は、idフィールドが1つしかないクラスで@GeneratedValueを使用することに関するものではありません。警告は、複合キーの1つの列で@GeneratedValueを使用することに関するものです。これは、非常に奇妙なユースケースです(12年間、このようなものの必要性は見られませんでした)。

したがって、警告は次のとおりです。複合キーで@GeneratedValueを使用する必要がある場合は、モデルに問題がある可能性が高いため、モデルを確認してください。

これで質問に答えられないと思われる場合は、この機能が必要になる可能性のある例を教えてください。

于 2012-07-31T10:24:09.227 に答える
0

代理識別子があります。これは、データベースレベルで主キーとして宣言される単一のプロパティ(したがって列)である必要があります。また、ビジネス識別子(別名ビジネスキー)があります。これはビジネス上の意味を持ち、複数のプロパティ(したがって列)で構成されている場合があります。

単一の代理識別子を生成することに何の問題もありません。Hibernateチームがおそらく意味したのは、ビジネス識別子の一部の生成(複数のプロパティの場合)が間違っているということです。

于 2012-07-31T10:28:50.467 に答える