@Repeatable(value=AssociationOverrides.class) @Target(value={TYPE,METHOD,FIELD}) @Retention(value=RUNTIME) public @interface AssociationOverride
マップドスーパークラスで定義されたリレーションシップのマッピングをマップドスーパークラスを拡張したエンティティに適用して上書きすることができます。
指定されていない場合、関連はオリジナルのマッピングと同じものがマッピングされます。
マップドスーパークラスで定義されたマッピングを上書きする時はAssociationOverride
はエンティティクラスに適用されます。
組み込みクラスがリレーションシップの所有者側の場合は組み込みクラスの中から他のエンティティへのリレーションシップのマッピングを上書きするために使用できます。
組み込みクラス(他の組み込みクラスに含まれる組み込みクラスの場合を含みます)で定義されたリレーションシップのマッピングを上書きする場合は
AssociationOverride
はその組み込みクラスを含むフィールドもしくはプロパティに適用されます。
AssociationOverride
が組み込みクラス内のリレーションシップを参照したフィールドもしくはプロパティを上書きするために使用された場合、
name
要素は組み込みクラス内のリレーションシップを参照したフィールドもしくはプロパティを指定します。
複数の埋め込みレベルのマッピングを上書きするには、組み込み属性内の属性を示すためにname
要素にドット(".")表記形式を使用する必要があります。
ドット表記で使用される各識別子の値は、それぞれの組み込みフィールドもしくはプロパティの名前です。
AssociationOverride
がMapの値として使用されている組み込みクラスのマッピングを上書きするために適用されている場合は
マップの値の一部として指定するために上書きされる組み込みクラスの含まれる属性の名前のプレフィックスとしてvalue.
"を使用する必要があります。
リレーションシップが外部キーマッピングの場合はjoinColumns
要素が使用されます。
リレーションシップのマッピングが結合テーブルを使用する場合はjoinTable
要素を結合テーブルやその結合カラムのマッピングを上書きするために指定する必要があります。
Example 1: マップドスーパークラスで定義されたリレーションシップのマッピングを上書きする @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: ContactInfoクラスで定義されたphoneNumbersのマッピングを上書きする @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; // 単方向 @ManyToMany(targetEntity=PhoneNumber.class) List phoneNumbers; } @Entity public class PhoneNumber { @Id int number; @ManyToMany(mappedBy="contactInfo.phoneNumbers") Collection<Employee> employees; }
Embedded
,
Embeddable
,
MappedSuperclass
,
AttributeOverride
修飾子とタイプ | 必須要素と説明 |
---|---|
java.lang.String |
name
(必須) プロパティベースのアクセスが使用されている場合にはマッピングが上書きされるリレーションシップのプロパティの名前、
またはフィールドベースのアクセスが使用されている場合はリレーションシップのフィールドの名前。
|
修飾子とタイプ | 任意要素と説明 |
---|---|
ForeignKey |
foreignKey
(オプション) テーブルの生成が有効な場合に
joinColumns 要素に関係するカラムのための外部キー制約の生成を指定または制御するために使用されます。 |
JoinColumn[] |
joinColumns
永続属性にマッピングされる結合カラム。
|
JoinTable |
joinTable
リレーションシップのマッピングをされる結合テーブル。
|
public abstract java.lang.String name
public abstract JoinColumn[] joinColumns
joinColumns
要素を指定する必要があります。
リレーションシップの上書きに結合テーブルが使用される場合はjoinColumns
要素を指定してはいけません。public abstract ForeignKey foreignKey
joinColumns
要素に関係するカラムのための外部キー制約の生成を指定または制御するために使用されます。
この要素とjoinColumns
要素のいずれかのforeignKey
要素の両方が指定されていた場合の挙動は未定義です。
いずれの場所にも外部キーのアノテーション要素が指定されていない場合は、永続化プロバイダのデフォルトの外部キー戦略が適用されます。public abstract JoinTable joinTable
joinTable
要素を指定する必要があります。
リレーションシップの上書きに外部キーマッピングが使用される場合はjoinTable
要素を指定してはいけません。Translated by @megascus.