パッケージ jakarta.persistence
アノテーションインターフェース ManyToMany
多対多の多重度を持つ多値の関連付けを指定し、結合テーブルと呼ばれる中間テーブルにマッピングします。
すべての多対多の関連付けには、所有側と非所有側、つまり逆側の 2 つの側面があります。結合テーブルは所有側で指定します。関連付けが双方向の場合、どちらの側も所有側として指定でき、非所有側は ManyToMany
アノテーションの mappedBy()
要素を使用して、所有側の関連フィールドまたはプロパティを指定する必要があります。
関連の結合テーブルは、デフォルトでない場合、所有側で指定されます。JoinTable
アノテーションは、データベーステーブルへのマッピングを指定します。
ManyToMany
アノテーションは、エンティティのコレクションとの関連を指定するために、エンティティクラス内に含まれる埋め込み可能クラス内で使用できます。リレーションシップが双方向で、埋め込み可能クラスを含むエンティティがリレーションシップの所有者である場合、非所有側は ManyToMany
アノテーションの mappedBy()
要素を使用して、埋め込み可能クラスのリレーションシップフィールドまたはプロパティを指定する必要があります。埋め込み属性内の関連属性を示すには、mappedBy
要素でドット (.
) 表記構文を使用する必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。
例 1:
例 2:
例 3:
- 導入:
- 1.0
- 関連事項:
オプション要素の概要
オプション要素修飾子と型オプションの要素説明(オプション)関連付けのターゲットにカスケードする必要がある操作。(オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。関連を所有するフィールド。ClassSE<?>
(オプション)関連付けのターゲットであるエンティティクラス。
要素の詳細
targetEntity
ClassSE<?> targetEntity(オプション)関連付けのターゲットであるエンティティクラス。コレクション値の関連プロパティが Java ジェネリクスを使用して定義されている場合のみオプションです。それ以外の場合は指定する必要があります。ジェネリクスを使用して定義されている場合、デフォルトはコレクションのパラメーター化された型です。
- デフォルト:
- void.class
cascade
CascadeType[] cascade(オプション)関連付けのターゲットにカスケードする必要がある操作。ターゲットコレクションが
Map
SE の場合、cascade
要素はマップ値に適用されます。デフォルトでは、カスケードされる操作はありません。
- デフォルト:
- {}
fetch
FetchType fetch(オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。指定しない場合、デフォルトは
LAZY
になります。- デフォルト:
- LAZY
mappedBy
StringSE mappedBy関連を所有するフィールド。関連が単方向でない場合は必須です。- デフォルト:
- ""