Vložitelné třídy nemohou mít anotaci Id, když je odkazováno anotací EmbeddedId

Podle specifikace JPA (Java Persistence API) platí, že pokud entita definuje atribut s anotací EmbeddedId, vestavitelná třída nemůže obsahovat atribut s anotací Id. Je-li definována anotace EmbeddedId i anotace Id, rozhraní OpenJPA bude ignorovat anotaci Id, zatímco EclipseLink generuje výjimku.

Toto pravidlo prochází a hledá vložitelné třídy, které obsahují atributy s anotací Id. Pravidlo značí anotace Id v závislosti na tom, zda najde entitu, která odkazuje na vložitelnou třídu, pomocí anotace EmbeddedId.

V tomto příkladu pravidlo značí anotaci Id ve třídě EmbeddableObject.

   import javax.persistence.EmbeddedId; import javax.persistence.Entity; @Entity public třída MainEntity {

      @EmbeddedId private EmbeddableObject eo;}
   import javax.persistence.Embeddable; import javax.persistence.Id; @Embeddable public class EmbeddableObject {

      Pole @Id private int ;

      ...}

Chcete-li vyřešit problém, rychlá oprava odebere anotaci @Id a její import.

   import javax.persistence.Embeddable; import javax.persistence.Id;

   @Entity public třída MainEntity {

      @EmbeddedId private EmbeddableObject eo;}
   import javax.persistence.Embeddable; @Embeddable public class EmbeddableObject { private int ;

      ...}

Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.