パッケージ jakarta.persistence

アノテーションインターフェース ManyToMany


@TargetSE({METHODSE,FIELDSE}) @RetentionSE(RUNTIMESE) public @interface ManyToMany
多対多の多重度を持つ多値の関連付けを指定し、結合テーブルと呼ばれる中間テーブルにマッピングします。

すべての多対多の関連付けには、所有側と非所有側、つまり逆側の 2 つの側面があります。結合テーブルは所有側で指定します。関連付けが双方向の場合、どちらの側も所有側として指定でき、非所有側は ManyToMany アノテーションの mappedBy() 要素を使用して、所有側の関連フィールドまたはプロパティを指定する必要があります。

関連の結合テーブルは、デフォルトでない場合、所有側で指定されます。JoinTable アノテーションは、データベーステーブルへのマッピングを指定します。

ManyToMany アノテーションは、エンティティのコレクションとの関連を指定するために、エンティティクラス内に含まれる埋め込み可能クラス内で使用できます。リレーションシップが双方向で、埋め込み可能クラスを含むエンティティがリレーションシップの所有者である場合、非所有側は ManyToMany アノテーションの mappedBy() 要素を使用して、埋め込み可能クラスのリレーションシップフィールドまたはプロパティを指定する必要があります。埋め込み属性内の関連属性を示すには、mappedBy 要素でドット (.) 表記構文を使用する必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。

例 1:

例 2:

例 3:

導入:
1.0
関連事項:
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    (オプション)関連付けのターゲットにカスケードする必要がある操作。
    (オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。
    関連を所有するフィールド。
    (オプション)関連付けのターゲットであるエンティティクラス。
  • 要素の詳細

    • targetEntity

      ClassSE<?> targetEntity
      (オプション)関連付けのターゲットであるエンティティクラス。コレクション値の関連プロパティが Java ジェネリクスを使用して定義されている場合のみオプションです。それ以外の場合は指定する必要があります。

      ジェネリクスを使用して定義されている場合、デフォルトはコレクションのパラメーター化された型です。

      デフォルト:
      void.class
    • cascade

      CascadeType[] cascade
      (オプション)関連付けのターゲットにカスケードする必要がある操作。

      ターゲットコレクションが MapSE の場合、cascade 要素はマップ値に適用されます。

      デフォルトでは、カスケードされる操作はありません。

      デフォルト:
      {}
    • fetch

      FetchType fetch
      (オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。
      • EAGER 戦略は、関連付けられたエンティティを積極的にフェッチする必要がある永続プロバイダーランタイムの要件です。
      • LAZY 戦略は、永続化プロバイダーランタイムへのヒントです。

      指定しない場合、デフォルトは LAZY になります。

      デフォルト:
      LAZY
    • mappedBy

      StringSE mappedBy
      関連を所有するフィールド。関連が単方向でない場合は必須です。
      デフォルト:
      ""