@Target(value={METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface EmbeddedId
Embeddable
アノテーションを付ける必要があります。
EmbeddedId
アノテーションが使用されている場合は、
EmbeddedId
アノテーションは一つのみであり、Id
アノテーションは使用してはいけません。
AttributeOverride
アノテーションを使用することで組み込みクラス内で宣言されたカラムのマッピングを上書きすることができます。
MapsId
アノテーションは派生主キーを指定するためにEmbeddedId
アノテーションとともに使用できます。
エンティティに派生主キーがある場合、AttributeOverride
アノテーションは親エンティティとのリレーションシップに対応しない組み込みIDの属性を上書きする場合のみ使用できます。
組み込みIDクラス内で定義されたリレーションシップのマッピングはサポートされていません。
Example 1: @EmbeddedId protected EmployeePK empPK; Example 2: @Embeddable public class DependentId { String name; EmployeeId empPK; // Employeeの主キーに対応 } @Entity public class Dependent { // default column name for "name" attribute is overridden @AttributeOverride(name="name", @Column(name="dep_name")) @EmbeddedId DependentId id; ... @MapsId("empPK") @ManyToOne Employee emp; }
Embeddable
,
MapsId
Translated by @megascus.