@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,
MapsIdTranslated by @megascus.