パッケージ jakarta.persistence
アノテーション型 ManyToMany
@TargetSE({METHODSE,FIELDSE}) @RetentionSE(RUNTIMESE) public @interface ManyToMany
多対多の多重度を持つ多値の関連付けを指定します。すべての多対多の関連付けには、所有側と非所有(逆)側の 2 つの側面があります。結合テーブルは所有側で指定されます。関連付けが双方向の場合、どちらの側も所有側として指定できます。関連が双方向の場合、非所有側は
ManyToMany
アノテーションのmappedBy
要素を使用して、所有側の関連フィールドまたはプロパティを指定する必要があります。関連の結合テーブルは、デフォルトではない場合、所有側で指定されます。
ManyToMany
アノテーションは、エンティティクラスに含まれる埋め込み可能なクラス内で使用して、エンティティのコレクションとの関連を指定できます。関連が双方向で、埋め込み可能クラスを含むエンティティが関連の所有者である場合、非所有側はManyToMany
アノテーションのmappedBy
要素を使用して、埋め込み可能クラスの関連フィールドまたはプロパティを指定する必要があります。mappedBy
要素でドット("." )表記構文を使用して、埋め込み属性内の関連属性を示す必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。Example 1: // In Customer class: @ManyToMany @JoinTable(name="CUST_PHONES") public Set<PhoneNumber> getPhones() { return phones; } // In PhoneNumber class: @ManyToMany(mappedBy="phones") public Set<Customer> getCustomers() { return customers; } Example 2: // In Customer class: @ManyToMany(targetEntity=com.acme.PhoneNumber.class) public Set getPhones() { return phones; } // In PhoneNumber class: @ManyToMany(targetEntity=com.acme.Customer.class, mappedBy="phones") public Set getCustomers() { return customers; } Example 3: // In Customer class: @ManyToMany @JoinTable(name="CUST_PHONE", joinColumns= @JoinColumn(name="CUST_ID", referencedColumnName="ID"), inverseJoinColumns= @JoinColumn(name="PHONE_ID", referencedColumnName="ID") ) public Set<PhoneNumber> getPhones() { return phones; } // In PhoneNumberClass: @ManyToMany(mappedBy="phones") public Set<Customer> getCustomers() { return customers; }
- 導入:
- 1.0
- 関連事項:
JoinTable
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 CascadeType[]
cascade
(オプション)関連付けのターゲットにカスケードする必要がある操作。FetchType
fetch
(オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。StringSE
mappedBy
関連を所有するフィールド。ClassSE
targetEntity
(オプション)関連付けのターゲットであるエンティティクラス。
要素の詳細
targetEntity
ClassSE targetEntity
(オプション)関連付けのターゲットであるエンティティクラス。コレクション値の関連プロパティが Java ジェネリクスを使用して定義されている場合のみオプションです。それ以外の場合は指定する必要があります。ジェネリクスを使用して定義されている場合、デフォルトはコレクションのパラメーター化された型です。
- デフォルト:
- void.class
cascade
CascadeType[] cascade
(オプション)関連付けのターゲットにカスケードする必要がある操作。ターゲットコレクションが
java.util.Map
SE の場合、cascade
要素はマップ値に適用されます。デフォルトでは、カスケードされる操作はありません。
- デフォルト:
- {}
fetch
FetchType fetch
(オプション)関連付けを遅延ロードするか、積極的にフェッチする必要があるか。EAGER 戦略は、関連するエンティティを積極的に取得する必要があるという永続性プロバイダーランタイムの要件です。LAZY 戦略は、永続化プロバイダーランタイムへのヒントです。- デフォルト:
- jakarta.persistence.FetchType.LAZY
mappedBy
StringSE mappedBy
関連を所有するフィールド。関連が単方向でない場合は必須です。- デフォルト:
- ""