1 対多マッピング

「1 対多マッピング」を使用して、1 対多の多重度を持つ関係を定義します。

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

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

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

    プロパティー 説明 デフォルト
    エンティティー・タイプのハイパーリンクのマッピング マッピングを「1 対多」として定義します。これは注釈 @OneToMany に対応します。 1 対多
    ターゲット・エンティティー この属性のマップ先となるエンティティー。
    カスケード 詳しくは、 カスケード・タイプを参照してください。
    • デフォルト

    • すべて

    • 保持

    • マージ

    • 削除


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

    • 遅延 (Lazy)

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

    • 主キー

    • カスタム

    配列なし

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

    プロパティー 説明 デフォルト
    名前 結合テーブルの名前 デフォルトでは、名前はエンティティーに関連付けられた 1 次テーブルが下線で連結されたものと想定されます。
    結合列 2 つ以上の結合列 (つまり主キー) を指定します。
    逆結合列 関連の所有されている (逆の) 側の結合列。所有されているエンティティーの主キー列。

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

@OneToMany(targetEntity=<TARGET_ENTITY>)
@Column(name="<COLUMN>")


@OneToMany(targetEntity=<TARGET_ENTITY>.class, cascade=CascadeType.<CASCADE_TYPE>,
    fetch = FetchType.<FETCH_TYPE>, mappedBy = "<MAPPED_BY>")@OrderBy("<ORDER_BY>")
@JoinTable(name="<JOIN_TABLE_NAME>", joinColumns=@JoinColumn(name=
    "<JOIN_COLUMN_NAME>", referencedColumnName="<JOIN_COLUMN_REFERENCED_COLUMN>"),
    inverseJoinColumns=@JoinColumn(name="<INVERSE_JOIN_COLUMN_NAME>",
    referencedColumnName="<INVERSE_JOIN_COLUMN_REFERENCED_COLUMN>"))


 

関連タスク

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

 

関連リファレンス

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

 

関連概念

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