EJB + JPA - Deletar um objeto [RESOLVIDO]

3 respostas
rafabh3

Pessoal estou com um problema aqui e nao consigo sair dele… Quando vou deletar um objeto do banco, nao consigo e o java sempre me retorna o sgeuinte erro:

java.lang.IllegalArgumentException: Entity must be managed to call remove: br.com.gctbio.ga.entity.Produto[ idProduto=1 ], try merging the detached and try the remove again.

Abaixo segue o método remover do meu Managed Bean, quem puder me dar uma força será de grande valia, muito obrigado desde já!!

public void remover (){ produtoDAO.remover((Produto) produtoDAO.merge(produto)); }

3 Respostas

Hebert_Coelho

Tenta assim:

produtoDAO.remover(produto);

e lá dentro você faz

Produto produto = entityManager.merge(produto); entityManager.remove(produto);

igor_ks

Olha soh o stack do erro, vou tentar te explicar…

A entidade precisa estar “managed” (gerenciada) pra chamar o remove: tente dar merge e desatachar e tente remover novamente…

o jakefrog colocou a solucao, dando o merge antes. Mas porque deste merge?

JPA tem um ciclo de vida, como segue na imagem abaixo

Neste momento, sua entidade está na parte do ciclo “Desacoplado”, e para remover, como diz a seta, precisa dar merge para virar gerenciavel.

rafabh3

jakefrog e igor_ks,

Muito obrigado mesmo pela atenção, pela solução e pela explicação do problema, vcs me ajudaram muito mesmo!!!

Problema resolvido aqui!!!

Grande abraço!!!

Criado 18 de janeiro de 2012
Ultima resposta 19 de jan. de 2012
Respostas 3
Participantes 3