Pergunta

Atualmente, estou tentando implementar uma relação de muita coisa com dados no articável. estou seguindo essa abordagem com a estrutura Eclipselink JPA. Mas estou recebendo a seguinte exceção:

org.eclipse.persistence.exceptions.EntityManagerSetPexception.PredeployFailed (EntityManagerSetPexception.java:210) ... 23 Mais causado por: Exceção [EclipSelink-7298] (Eclipse Persistence-2.1.1.v20100817880): Persistence.Exceptions.ValidationException Exceção Descrição: O mapeamento [Grupo] da classe de identificação incorporada [classe de.kapieren.MBM.Server.model.userGrouppk] é um mapeamento inválido para esta classe. Uma classe incorporável que é usada com uma especificação de ID incorporada (atributo [pk] da fonte [classe de.kapieren.mbm.server.model.groupMembership]) pode conter apenas mapeamentos básicos. Remova o mapeamento não básico ou altere a especificação de identificação incorporada na fonte a ser incorporada

Alguém sabe qual é o significado dos mapeamentos básicos em relação ao incorporado? Oque pode estar errado aqui?

Foi útil?

Solução

Eclipselink está reclamando do uso de não Basic mapeamentos (por exemplo, um ManyToOne) em um Embeddable classe usada como chave primária (ou seja, anotada com EmbeddedId).

E de acordo com a especificação JPA 2.0, isso realmente não é suportado:

11.1.15 Anotação incorporada

o EmbeddedId A anotação é aplicada a um campo persistente ou propriedade de uma classe de entidade ou superclasse mapeada para denotar uma chave primária composta que é uma classe incorporável. A classe incorporável deve ser anotada como Embeddable. Os mapeamentos de relacionamento definidos em uma classe de identificação incorporados não são suportados.

Se eu reformular, o EmbeddedId's Embeddable a classe deve definir cada atributo de identificação para a entidade usando Basic Mapeamentos no JPA padrão.

Referências

  • Especificação JPA 2.0
    • Seção 11.1.15 "Anotação incorporada"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top