@RepeatableSE(valueSE=AttributeOverrides.class) @TargetSE(valueSE={TYPESE,METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) public @interface AttributeOverride
Basic (明示的またはデフォルト)プロパティまたはフィールド、または Id プロパティまたはフィールドのマッピングをオーバーライドするために使用されます。マップされたスーパークラスまたは埋め込みフィールドまたはプロパティを継承するエンティティに適用して、マップされたスーパークラスまたは埋め込み可能クラス(またはその属性の 1 つの埋め込み可能クラス)によって定義された基本的なマッピングまたは ID マッピングをオーバーライドできます。
埋め込み可能なクラスのインスタンスを含む要素コレクション、またはキーや値が埋め込み可能なクラスであるマップコレクションに適用できます。AttributeOverride をマップに適用する場合、マップキーまたはマップ値の一部として指定するには、オーバーライドされる属性の名前の前に "key." または "value." を使用する必要があります。
複数レベルの埋め込みでマッピングをオーバーライドするには、ドット("." )表記形式を name 要素で使用して、埋め込み属性内の属性を示す必要があります。ドット表記で使用される各識別子の値は、それぞれの埋め込みフィールドまたはプロパティの名前です。
AttributeOverride が指定されていない場合、列は元のマッピングと同じようにマップされます。
Example 1:
@MappedSuperclass
public class Employee {
@Id protected Integer id;
@Version protected Integer version;
protected String address;
public Integer getId() { ... }
public void setId(Integer id) { ... }
public String getAddress() { ... }
public void setAddress(String address) { ... }
}
@Entity
@AttributeOverride(name="address", column=@Column(name="ADDR"))
public class PartTimeEmployee extends Employee {
// address field mapping overridden to ADDR
protected Float wage();
public Float getHourlyWage() { ... }
public void setHourlyWage(Float wage) { ... }
}
Example 2:
@Embeddable public class Address {
protected String street;
protected String city;
protected String state;
@Embedded protected Zipcode zipcode;
}
@Embeddable public class Zipcode {
protected String zip;
protected String plusFour;
}
@Entity public class Customer {
@Id protected Integer id;
protected String name;
@AttributeOverrides({
@AttributeOverride(name="state",
column=@Column(name="ADDR_STATE")),
@AttributeOverride(name="zipcode.zip",
column=@Column(name="ADDR_ZIP"))
})
@Embedded protected Address address;
...
}
Example 3:
@Entity public class PropertyRecord {
@EmbeddedId PropertyOwner owner;
@AttributeOverrides({
@AttributeOverride(name="key.street",
column=@Column(name="STREET_NAME")),
@AttributeOverride(name="value.size",
column=@Column(name="SQUARE_FEET")),
@AttributeOverride(name="value.tax",
column=@Column(name="ASSESSMENT"))
})
@ElementCollection
Map<Address, PropertyInfo> parcels;
}
@Embeddable public class PropertyInfo {
Integer parcelNumber;
Integer size;
BigDecimal tax;
}
Embedded, Embeddable, MappedSuperclass, AssociationOverrideCopyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.