Atualização Completa de Objeto Filho utilizando Relacionamento OnToMany

0 respostas
B

Boa Noite estou tendo um problema que consiste na seguinte situação, tenho uma class Contato onde o mesmo possui uma lista de Telefones o problema ocorre quando vou realizar uma alteração no Contato e Apago um telefone já cadastrado o sistema excluir da lista porem não exclui do BD quando realizo o Merge encontrei algumas soluções porem não entendi o porque tenho que utilizar dessa forma e se existe alguma forma mais simplificada.

uma das soluções que encontrei foi colocar a Classe Telefone o  implements Comparable

e no

public int compareTo(Telefone telefone) {

if(this.getId() != telefone.getId()){

return 1;

}

else {		

return 0;

}

}

e quando for gravar antes de realizar o merge realizar o processo abaixo.

Contato contatoGravado = entityManager.find(Contato.class, contato.getId());

List telefonesGravados = contatoGravado.getTelefones();//Recarregar Dados do Banco Custo Alto Para o BD ou Servidor em Alguns casso

List telefonesNovos = contato.getTelefones();//Pegar Lista de Telefones Atualizados no Contato que está sendo Alterado

for (Telefone telefone : telefonesGravados) {

if (!telefonesNovos.contains(telefone)){//Verificar se o Telefone que se encontra no Banco existe na Nova Relação de Telefones

entityManager.remove(entityManager.find(Telefone.class, telefone.getId()));//Excluir Caso o Mesmo não Existe

}			

}

Gostaria de entende o Poque tenho que fazer dessa forma e se existem alguma maneira onde apenas passo a lista e o JPA se preucupa em fazer essa Operação de Comparação de objetos.

Pedro E. Braga
MSN: [email removido]
Fone:([telefone removido]

Criado 26 de abril de 2011
Respostas 0
Participantes 1