Até ai tudo bem ele salva, recupera tudo certinho mas quando tento remover um contato ele simplesmente nao remove, é necessário realizar a remoção manual apenas do contato ??? Pois tento fazer o seguinte:
contato=modelo2.getValue(tbContato.getSelectedRow());// Aqui ele retorna o objeto contato que esta sendo removido, utilizo o ObjectTableModelcliente.getContatos().remove(contato);
Quando efetuo o merge ele não deveria remover aqueles objetos que não estão ligados ao cliente ? Ou isso é assim mesmo ???
DaoCliente
A propósito, agora que eu percebi uma coisa… você remove o contato do objeto cliente, mas depois faz merge em outro (pCliente) ?
wolmirGarbin
Opa td certo…
Bom não sei se entendi muito bem o problema mas assim, o merge apenas atualiza então por mais que esteja com “cascade=CascadeType.ALL” acredito que não ira remover pois esta apenas alterando ou persistindo um objeto…
No delete ele excluiria as referencias mas ainda assim teria que ver se não tem validação no banco de dados…
Mas como eu disse não sei se entendi muito bem mas espero ter ajudado…
Valew!
montroni1 like
Na verdade GomesRod é o mesmo objeto só que como recebo ele como parametro no DAO passo a chama-lo de pCliente.
Então talvez fique mais claro se disser o que quero fazer:
Então eu tenho uma tela de cadastro de cliente e nesta tela tem o cadastro de contatos também, e vamos supor que o usuario remova um contato desta lista, somente quero saber como faço para remover o contato que foi removido, lembrando que nesta tela ele pode por exemplo: cadastrar um novo contato e remover um antigo por exemplo, tudo funciona normal menos o remover contato que eu imaginava que bastaria remover ele da lista de contatos do cliente e atualizar através do merge mas desta forma não da certo.
Se tiverem alguma idéia… E agradeço pela ajuda de vocês dois desde já.
montroni
Agradeço aos que tentaram ajudar, e após dezenas de perguntas para o Googleraculo cheguei a uma solução, então para aqueles que podem vir a ter a mesma situação que a minha fica ai a sugestão:
Então ao colocar o orphanRemoval ele passou a tentar excluir mas gerava um violation devido a chave estrangeira, para resolver isso, bastou retirar o CascadeType.ALL da classe Contato, então sucesssooo. 8)