Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 8 da Aula 3 - Gerenciamento de estados pelo EntityManager

Olá!! Se o método merge deixa a conta Managed, porque não consigo remover a conta após usar o metodo merge, somente após usar o find!

3 respostas
solução!

Oi Rene, tudo bem?

O merge serve pra "mesclar" o estado do objeto que você passou com o correspondente no banco de dados. Resumindo: executa um update no registro do banco que possui o id correspondente.

Mas não é o objeto que você passa pro merge que fica gerenciado. O merge tem um retorno: retorna um objeto do tipo que foi passado pra ele, e esse cara que o merge retorna, é managed.

Você pode fazer assim:

Conta c = em.merge(conta);
em.remove(c);

Podemos ver isso na documentação: http://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#merge-T-

Faz sentido? Se restou alguma dúvida nos avise. Abs.

Sim, faz sentido Lucas! Muito obrigado!!!!

Oi Rene, tudo bem?

É só pra dizer que eu encontei um post bem interessante do Paulo Silveira, onde inclusive, ele fala sobre essa questão do merge(). Recomendo a leitura. :)

http://blog.caelum.com.br/entidades-managed-transient-e-detached-no-hibernate-e-jpa/

Abs.