2012-01-24 16 views
0

私は3つのクラスを持っています。 クラス1 + 2はIDを持つ空のクラスです。Hibernateで2つの多対1キーを持つ複合キー

クラス3が2つの属性があります

private long id; <---- DO I NEED THIS??? 
private Class1 abc; 
private Class2 cde; 

それらは多対一の両方であり、例えば一緒にこのクラスのキーを定義する必要が
abc = abcとcde = cdeの2つのclass3インスタンスはありません。 私はこのようにそれを試してみました:

<composite-id name="id" class="class3">  
    <key-property name="abc" column="ID_CLASS1"/> 
    <key-property name="cde" column="ID_CLASS2" />   
</composite-id> 

これは、多対1の関係を反映していません、それはコンパイルされません!

誰かが私の特殊なケースで動作するマッピングを投稿できますか? 私はすべての文書を読みましたが、それを理解できませんでした! ありがとうございました。

答えて

1

したがって、AとBの2つのテーブルと、AとBの間の結合テーブルがあります。したがって、AとBの間にManyToMany関係がある可能性があります。したがって、このテーブルにIDを持たないでください。エンティティとしてマップします。

ManyToManyアソシエーションは、the reference manualの説明に従って使用してください。

+0

はい、class3を結合表として表示できます。それでもクラスclass3は存在する必要があり、関係がクラス1またはクラス2に格納されていないため、多対多を使用できません。問題は多対多の関係を「内側から」定義する必要があることです。したがって、クラス3のマッピングファイル – eclipse

+0

次に、数値ID列をテーブルに保持し、このテーブルを、自動生成されたIDと2つの単方向ManyToOneの関連付けを持つエンティティとしてマップします。複合IDは使用しないでください。 –

+0

ありがとうございますサー! – eclipse

関連する問題