JPA Eclipselink ManyTomany com dados
-
26-09-2019 - |
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?
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 comoEmbeddable
. 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"