As classes integráveis não podem ter uma anotação de ID quando referenciadas por uma anotação EmbeddedId

De acordo com a especificação API de Persistência Java (JPA), se uma entidade define um atributo com uma anotação EmbeddedId, a classe integrável não pode conter um atributo com uma anotação Id. Se ambas as anotações EmbeddedId e Id forem definidas, o OpenJPA ignora a anotação Id, enquanto o EclipseLink lança uma exceção.

Essa regra detecta classes Embeddable que contêm atributos com uma anotação Id, então a regra marca as anotações Id dependendo do fato de encontrar uma entidade que faça referência à classe incorporável usando uma anotação EmbeddedId anotação.

Neste exemplo, a regra sinaliza a anotação Id na classe EmbeddableObject.

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

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

      @Id campo int privado ;

      ...}

Para resolver o problema, remova a anotação @Id e sua importação.

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

   @Entity public class MainEntity {

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

      ...}

Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.