Las clases incorporables no pueden tener una anotación Id si una anotación EmbeddedId hace referencia a estas clases

De acuerdo con la especificación JPA (Java Persistence API), si una entidad define un atributo con una anotación EmbeddedId, la clase incorporable no puede contener un atributo con una anotación Id. Si se definen ambas anotaciones, EmbeddedId e Id, OpenJPA ignora la anotación Id, mientras que EclipseLink lanza una excepción.

Esta regla detecta las clases incrustables que contienen atributos con una anotación Id, entonces la regla marca las anotaciones Id en función de si encuentra una entidad que haga referencia a la clase incrustable utilizando una anotación EmbeddedId una anotación.

En este ejemplo, la regla señala la anotación Id en la clase EmbeddableObject.

   import javax.persistence.EmbeddedId; import javax.persistence.Entity; @Entity public clase MainEntity {

      @EmbeddedId privado EmbeddableObject eo;}
   import javax.persistence.Embeddable; import javax.persistence.Id; @Embeddable clase pública EmbeddableObject {

      @Id private int campo;

      ...}

Para resolver el problema, elimine la anotación @Id y su importación.

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

   @Entity public clase MainEntity {

      @EmbeddedId privado EmbeddableObject eo;}
   import javax.persistence.Embeddable; @Embeddable clase pública EmbeddableObject { private int campo;

      ...}

Si desea más información sobre este problema y otros problemas de migración de OpenJPA a EclipseLink, consulte la guía Migración de OpenJPA a EclipseLink JPA: Correlaciones.