Hibernate - persistindo em tabelas com chave composta
5 respostas
TedLoprao
Pessoal, o problema é o seguinte… Trabalho em um sistema onde o hibernate fica no servidor de aplicação e os objetos retornados do próprio são convertidos para VOs (ou DTOs) e passados para o cliente… Até ai tudo bem… O problema que é um sistema legado e as tabelas possuem várias chaves compostas. E especificamente em um programa do sistema ele trabalha com uma cascata de aproximadamente 14 tabelas 1 filha da outra…
Certo, o problema é que ao fazer um update da tabela pai ele tenta inserir as filhas, pois ele não sabe se os objetos já foram persistidos ou não… A única solução que me ocorreu foi criar uma propriedade nos VOs que indica se ele veio do banco ou não, entretanto isso não me parece uma boa solução…
O saveOrUpdate do Hibernate nao faz isto? pesquise sobre o “unsaved-value”.
Resumindo se seu campo de chave estiver null, o Hibernate insere. Caso contrário ele faz update.
TedLoprao
O problema é que o mesmo não pode ser nulo… Quando vc usar composite keys é obrigado a setar as chaves…
Para testar se está persistido vc pode utilizar uma classe que possua um flag indicando isso e conforme for, através de um interceptor vc avisa o hibernate que a mesma está persistida…
Entretanto como a classe foi pro cliente sem essa informação, na volta eu não sei se ela já foi persistida ou não…
Não sei se consegui explicar o problema!!!
Mas valeu assim mesmo!!
R
Ricardo_Moura
Estou tendo o mesmo problema ao tentar atualizar um campo da minha entidade que possui uma chave composta: