Boa tarde pessoal.
Es gostaria de deletar uma entidade A que tem relação com outra B. mas não quero deletar a entidade da relação B, só a entidade A.
Como eu posso fazer isso?
Boa tarde pessoal.
Es gostaria de deletar uma entidade A que tem relação com outra B. mas não quero deletar a entidade da relação B, só a entidade A.
Como eu posso fazer isso?
Você só pode deletar, por uma questão de restrição do banco de dados (restriction de FK) se:
A e B são relacionadas de modo que A contém a FK de B
A e B estão relacionadas de modo que A contenha FK de B e nenhum registro de A esteja associado ao B respectivo
Como, penso, não é o caso, a única opção é pegar todo A relacionado ao tal B a ser excluído e apontar para outro B.
Me expressei mal.
Na entidade A tem uma FK da entidade B. preciso excluir só A.
Só inverter.
Vamos considerar:
A (id, nome, b_id)
b(id, nome, blablabla)
Se é este o caso, só invocar o método remove do entitymanager, passando o objeto a ser excluído como parâmetro.
Caso seja
A (id. nome, blablabla)
B (id. nome, a_id)
Eu desconheço uma maneira de fazer essa exclusão, afinal, você deixará o registro em B “órfão”.
Entendi.
Obrigado.
Sei que é meio antigo esse post, mas concordo com o usuário @darlan_machado, e quero fazer um complemento ao que ele escreveu. Se ficar um registro órfão, tem como contornar usando uma propriedade do JPA chamada orphanRemoval.
Pode ficar assim @OneToOne(orphanRemoval=true), ou @OneToMany(orphanRemoval=true), isso é utilizado quando excluímos registros direto no banco de dados, por fora da aplicação (mas também deve-se fazer isso com cuidado, o correto é excluir ambos registros, o resgistro filho e depois o registro pai). Usando a aplicação estaria errado excluir primeiro o pai, e deixar os filhos, você deve excluir primeiro os registros filhos e depois o registro pai. Fiz um tutorial sobre JPA, ele é simples, por favor, veja se ajuda.
Seguem os links:
http://www.tidicas.com.br/?p=1864
http://www.tidicas.com.br/?p=130