アノテーション型 AssociationOverride
@RepeatableSE(AssociationOverrides.class) @TargetSE({TYPESE,METHODSE,FIELDSE}) @RetentionSE(RUNTIMESE) public @interface AssociationOverride
エンティティ関連のマッピングをオーバーライドするために使用されます。マップされたスーパークラスを継承するエンティティに適用して、マップされたスーパークラスによって定義された関連マッピングをオーバーライドできます。指定しない場合、関連付けは元のマッピングと同じようにマッピングされます。マップされたスーパークラスによって定義されたマッピングをオーバーライドするために使用される場合、
AssociationOverride
はエンティティクラスに適用されます。埋め込み可能オブジェクトがリレーションシップの所有側にある場合に、エンティティ内の埋め込み可能オブジェクトから別のエンティティへのリレーションシップマッピングをオーバーライドするために使用できます。埋め込み可能クラス(別の埋め込み可能クラス内に埋め込まれた埋め込み可能クラスを含む)によって定義された関連マッピングをオーバーライドするために使用される場合、
AssociationOverride
は埋め込み可能を含むフィールドまたはプロパティに適用されます。AssociationOverride
を使用して、埋め込み可能クラスからの関連マッピングをオーバーライドする場合、name
エレメントは、埋め込み可能クラス内の参照関連フィールドまたはプロパティを指定します。複数レベルの埋め込みでマッピングをオーバーライドするには、ドット("." )表記構文をname
要素で使用して、埋め込み属性内の属性を示す必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。AssociationOverride
を適用して、マップ値として使用される埋め込み可能クラスのマッピングをオーバーライドする場合、マップ値の一部として指定するには、オーバーライドされる埋め込み可能クラス内の属性の名前の前に "value.
" を使用する必要があります。リレーションシップマッピングが外部キーマッピングの場合、
joinColumns
要素が使用されます。関連マッピングで結合テーブルを使用する場合は、joinTable
エレメントを指定して、結合テーブルやその結合列のマッピングをオーバーライドする必要があります。Example 1: Overriding the mapping of a relationship defined by a mapped superclass @MappedSuperclass public class Employee { ... @ManyToOne protected Address address; ... } @Entity @AssociationOverride(name="address", joinColumns=@JoinColumn(name="ADDR_ID")) // address field mapping overridden to ADDR_ID foreign key public class PartTimeEmployee extends Employee { ... }
Example 2: Overriding the mapping for phoneNumbers defined in the ContactInfo class @Entity public class Employee { @Id int id; @AssociationOverride( name="phoneNumbers", joinTable=@JoinTable( name="EMPPHONES", joinColumns=@JoinColumn(name="EMP"), inverseJoinColumns=@JoinColumn(name="PHONE") ) ) @Embedded ContactInfo contactInfo; ... } @Embeddable public class ContactInfo { @ManyToOne Address address; // Unidirectional @ManyToMany(targetEntity=PhoneNumber.class) List phoneNumbers; } @Entity public class PhoneNumber { @Id int number; @ManyToMany(mappedBy="contactInfo.phoneNumbers") Collection<Employee> employees; }
- 導入:
- 1.0
- 関連事項:
Embedded
,Embeddable
,MappedSuperclass
,AttributeOverride
オプション要素のサマリー
オプション要素 修飾子と型 オプションの要素 説明 ForeignKey
foreignKey
(オプション)テーブル生成が有効な場合に、joinColumns
要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。JoinColumn[]
joinColumns
永続属性にマップされている結合列。JoinTable
joinTable
関連をマップする結合テーブル。
要素の詳細
name
StringSE name
(必須)プロパティベースのアクセスが使用されている場合はマッピングが上書きされるリレーションシッププロパティの名前、またはフィールドベースのアクセスが使用されている場合はリレーションシップフィールドの名前。
joinColumns
JoinColumn[] joinColumns
永続属性にマップされている結合列。関連のマッピングのオーバーライドで外部キーマッピングを使用する場合は、joinColumns
要素を指定する必要があります。関連のマッピングのオーバーライドで結合テーブルを使用する場合は、joinColumns
エレメントを指定しないでください。- デフォルト:
- {}
foreignKey
ForeignKey foreignKey
(オプション)テーブル生成が有効な場合に、joinColumns
要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。この要素といずれかのjoinColumns
要素のforeignKey
要素の両方が指定されている場合、動作は未定義です。どちらの場所でも外部キーアノテーション要素が指定されていない場合は、永続性プロバイダーのデフォルトの外部キー戦略が適用されます。- 導入:
- 2.1
- デフォルト:
- @jakarta.persistence.ForeignKey(jakarta.persistence.ConstraintMode.PROVIDER_DEFAULT)
joinTable
JoinTable joinTable
関連をマップする結合テーブル。関連のマッピングのオーバーライドで結合テーブルを使用する場合は、joinTable
エレメントを指定する必要があります。関連のオーバーライドで外部キーマッピングが使用されている場合は、joinTable
要素を指定しないでください。- 導入:
- 2.0
- デフォルト:
- @jakarta.persistence.JoinTable