O erro a que ele se refere é um comportamento normal do mapeamento JPA.
Ele está com dificuldades para entender a razão pela qual os relacionamentos @ManyToOne estão gerando o @JoinColumn e setando o referencedColumnName.
O JPA me mostra o erro e me dá a seguinte solução, mas esse erro não vem de classes que eu mesmo fiz, mas sim de classes geradas pelo próprio JPA a partir dum banco de dados:
Exception Description: The @JoinColumns on the annotated element [field estado] from the entity class [class com.sigef.model.pojo.Cidade] is incomplete. When the source entity class uses a composite primary key, a @JoinColumn must be specified for each join column using the @JoinColumns. Both the name and the referencedColumnName elements must be specified in each such @JoinColumn.
at
J
Jonathan_Medeiros
Olá @AndreSI, pelo o que eu já trabalhei com JPA, este erro geralmente acontecia comigo quando a modelagem do DB está feita de forma incorreta, e isso é o que atrapalha o java de realizar o mapeamento correto de acordo com as tabelas existentes no DB, pois ele implementa de acordo com o que foi criado lá, ou seja, se a modelagem estiver errada, ele vai mapear errado.
Aconselho você reavaliar o seu DB e ver se a modelagem está 100% correta.
Espero ter ajudado, abraço!
A
AndreSI
Realmente deve ser isso, Obrigado!
Usei o mysql workbench pra modelar e as vezes quando agente deleta e insere uma tabela no modelo ele não consegue atualizar em outras tabelas relacionadas, por isso as vezes até é necessário verificar o script gerado.
Vou verificar, valew!!
A
Solucao aceita
AndreSI1 like
Descobri o erro!
é o seguinte:
tenho as tabelas em um BD:
pais -----< cidade -------< endereco -----< pessoa
todas ligadas atraves de relacao 1:n
a tabela “pessoa” deveria ter como chave estrangeira as seguintes:
FK’s
endereco_id
endereco_cidade_id
endereco_cidade_estado_id
endereco_cidade_estado_pais_id
mas eu costumava deixar apenas a chave da tabela mais próxima (endereco_id) e deletava as outras (2, 3 e 4) por não achá-las necessárias.
mas o JPA precisa delas. Quando deixei todas as chaves NÃO DEU MAIS ERRO e o JPA criou os @joinColumns({ }) com todos os @joinColumn() que a mesg de erro pedia.
agora não sabia que era necessário manter todas essas FK’s vindas lá da tabela do inicio das relações.