多対多マッピング

「多対多マッピング」を使用して、多対多の多重度を持つ多値の関連付けを定義します。多対多マッピングには、所有側非所有側の 2 つがあります。結合テーブルは所有側で指定する必要があります。双方向マッピングの場合、どちらかの側が所有側になります。

  1. 「JPA の構造」ビューで、マップするフィールドを選択します。

  2. このフィールドを右クリックしてから、「次としてマップ」>「多対多」を選択します。「JPA の詳細」ビュー (属性用) に、選択されたフィールドのプロパティーが表示されます。

  3. 以下の表を使用して、「JPA の詳細」ビューの「一般情報」フィールドに入力します。

    プロパティー 説明 デフォルト
    エンティティーのハイパーリンクのマッピング このマッピングを「多対多マッピング」として定義します。

    このフィールドは @ManyToMany の注釈に対応します。

    多対多
    ターゲット・エンティティー この属性のマップ先となるエンティティー。 null

    ターゲット・エンティティーは参照されるオブジェクトのタイプから推論できるため、明示的に指定する必要はありません。

    取り出し データをデータベースからロードする方法を定義します。詳しくは、取り出しタイプを参照してください。
    • 早急 (Eager)

    • 遅延 (Lazy)

    遅延 (Lazy)
    マップ元 関係を所有するデータベース・フィールド。
    配列基準 照会から戻されたオブジェクトのデフォルトの順序を指定します。 詳しくは、配列基準を参照してください。
    • 配列なし

    • 主キー

    • カスタム

    配列なし

  4. 以下の表を使用して、「JPA の詳細」ビューの「結合テーブル情報」の領域のフィールドに入力します。

    プロパティー 説明 デフォルト
    名前 外部キー列を持つ結合テーブルの名前です。 結合テーブルは所有側で指定する必要があります。

    デフォルトでは、名前はエンティティーに関連付けられた 1 次テーブルが下線で連結されたものと想定されます。

    結合列 「デフォルト値のオーバーライド」を選択して、結合列を追加、編集、または削除します。 デフォルトでは、名前はエンティティーに関連付けられた 1 次テーブルが下線で連結されたものと想定されます。
    逆結合列 「デフォルト値のオーバーライド」を選択して、結合列を追加、編集、または削除します。 デフォルトでは、マッピングは単一結合を持つと想定されています。

  5. 「結合列」または「逆結合列」を新規追加するには、「追加」をクリックします。

    既存の「結合列」または「逆結合列」を編集するには、フィールドを選択して「編集」をクリックします。

Eclipse は以下の注釈をフィールドに追加します。

@JoinTable(joinColumns=@JoinColumn(name="<JOIN_COLUMN>"),
    name = "<JOIN_TABLE_NAME>")
@ManyToMany(cascade=CascadeType.<CASCADE_TYPE>, fetch=FetchType.<FETCH_TYPE>,
    targetEntity=<TARGET_ENTITY>, mappedBy = "<MAPPED_BY>")
@OrderBy("<ORDER_BY>")


 

関連タスク

エンティティーのマッピング

 

関連リファレンス

「JPA の構造」ビュー
「JPA の詳細」ビュー (属性用)

 

関連概念

OR マッピングの理解
EJB 3.0 Java Persistence API の理解