@RepeatableSE(valueSE=AssociationOverrides.class) @TargetSE(valueSE={TYPESE,METHODSE,FIELDSE}) @RetentionSE(valueSE=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;
}
Embedded, Embeddable, MappedSuperclass, AttributeOverride| 修飾子と型 | 必須要素と説明 |
|---|---|
StringSE | name(必須)プロパティベースのアクセスが使用されている場合はマッピングが上書きされるリレーションシッププロパティの名前、またはフィールドベースのアクセスが使用されている場合はリレーションシップフィールドの名前。 |
| 修飾子と型 | オプションの要素と説明 |
|---|---|
ForeignKey | foreignKey(オプション)テーブル生成が有効な場合に、 joinColumns 要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。 |
JoinColumn[] | joinColumns 永続属性にマップされている結合列。 |
JoinTable | joinTable 関連をマップする結合テーブル。 |
public abstract StringSE name
public abstract JoinColumn[] joinColumns
joinColumns 要素を指定する必要があります。関連のマッピングのオーバーライドで結合テーブルを使用する場合は、joinColumns エレメントを指定しないでください。public abstract ForeignKey foreignKey
joinColumns 要素に対応する列の外部キー制約の生成を指定または制御するために使用されます。この要素といずれかの joinColumns 要素の foreignKey 要素の両方が指定されている場合、動作は未定義です。どちらの場所でも外部キーアノテーション要素が指定されていない場合は、永続性プロバイダーのデフォルトの外部キー戦略が適用されます。public abstract JoinTable joinTable
joinTable エレメントを指定する必要があります。関連のオーバーライドで外部キーマッピングが使用されている場合は、joinTable 要素を指定しないでください。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.