Objeto do Hibernate ManyToOne referenciando duas vezes na mesma tabela
9 respostas
R
RafaelViana
Tenho um objeto do hibernate que precisa referenciar duas vezes a mesma tabela.
Explicando melhor, tenho um pedido que pode ter duas transportadoras.Seria a transportadora e outra para o redespacho.Tanto a transportadora como o redespacho pega um objeto da tabela de transportadora, mas o hibernate não me permite isso.O que eu posso fazer?
Tentei o seguinte, só que as duas colunas não podem referenciar a mesma tabela.
E dá esse erro, nem compila:
"Repeated column in mapping for entity"
Se eu coloco no JoinColumn, updatable= false , insertable= false
Ele compila, mas não salva
R
RafaelViana
Alguem?
J
JackOld
Pq vc não cria uma classe - tabela, para guardar a transportadora e redespacho de um produto. Assim, vc iria guardar o id_pedido, id_transportadora e um atributo is_redespacho, onde a transportadora que fosse o redespacho seria colocado flag de verdadeiro.
R
RafaelViana
Alguma outra solução?
B
bKn
Não há outra solução, sua modelagem está incorreta. Pense pelo lado SQL, você está querendo criar quatro chaves estrangeiras (sendo duas iguais) em uma tabela só.
R
RafaelViana
Alguma sugestão de uma modelagem correta?Ainda estou em tempo de arrumar isso.
Só me de uma direção que o resto corro atrás
R
RafaelViana
Assim, agora que tive um tempo fui ler um pouco sobre relacionamentos do Hibernate.
Como preciso de mais de um objeto transportadora: Many
Como esse objeto transportadora pode pertencer a outros pedidos: Many
O correto seria usar Many-To-Many
Porém não vou precisar várias transportadoras, apenas duas…
A solução acho que vai ser salvar o redespacho como um numero inteiro mesmo referenciando ao codigo da transportadora (sem FK), ou então criar um objeto TransportadoraPedido e fazer conforme ja foi citado acima…
R
roger_rf
Nunca usei esse recurso, mas, até onde sei, é possível referenciar duas vezes a mesma tabela. A única "pegadinha" é que você terá de ser bastante explícito em relação às colunas referenciadas: