@Target(value={METHOD,FIELD})
@Retention(value=RUNTIME)
public @interface EmbeddedId
Embeddable
.
There must be only one EmbeddedId
annotation and
no Id
annotation when the EmbeddedId
annotation is used.
The AttributeOverride
annotation may be used to override
the column mappings declared within the embeddable class.
The MapsId
annotation may be used in conjunction
with the EmbeddedId
annotation to specify a derived
primary key.
If the entity has a derived primary key, the
AttributeOverride
annotation may only be used to
override those attributes of the embedded id that do not correspond
to the relationship to the parent entity.
Relationship mappings defined within an embedded id class are not supported.
Example 1: @EmbeddedId protected EmployeePK empPK; Example 2: @Embeddable public class DependentId { String name; EmployeeId empPK; // corresponds to primary key type of 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