javax.persistence

## Annotation Type EmbeddedId

-     @Target(value={METHOD,FIELD})
      @Retention(value=RUNTIME)
      public @interface EmbeddedId

  Applied to a persistent field or property of an entity class or mapped superclass to denote a composite primary key that is an embeddable class. The embeddable class must be annotated as `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;
          }

  Since:
    Java Persistence 1.0
  See Also:
    `Embeddable`, `MapsId`

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.