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

Merge

Prezados, bom dia.

Eu não usei o merge e funcionou. A última atualização mudou a agência para 5 sem erro. Porque funcionou sem usar o merge?

EntityManager em = new JPAUtil().getEntityManager();

        em.getTransaction().begin();

        Conta conta = em.find(Conta.class, 1);
        conta.setAgencia("1");
        conta.setNumero("2");
        conta.setTitular("Galinho");

        em.getTransaction().commit();

        em.getTransaction().begin();
        conta.setAgencia("2");
        em.getTransaction().commit();

        em.close();

        em = new JPAUtil().getEntityManager();
        em.getTransaction().begin();
        conta.setAgencia("3");
        em.getTransaction().commit();
        em.close();

        EntityManager em2 = new JPAUtil().getEntityManager();
        em2.getTransaction().begin();
        conta.setAgencia("5");
        em2.getTransaction().commit();
        em2.close();

        System.out.println(conta.getAgencia());
6 respostas
solução!

Bom dia, Dirley! Como vai?

Faltou fazer o em2.persist(conta) como visto nessa aula! Dá uma olhada lá!

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Oi Gabriel. Não estou relatando um erro mas uma dúvida. Porque sem usar o merge a agência foi alterada?

Então, Dirley, o que eu quis dizer é que o erro que vc disse que não ocorreu é devido à falta do trecho de código que eu citei. Experimente colocá-lo no seu código que vc deverá ver o erro ocorrer.

Além disso, a atualização ocorreu apenas na instância referenciada por conta! No BD a alteração não deve ter sido efetuada.

Obrigado Gabriel. Vou verificar se alteração ocorreu no banco.

Exatamente isso Gabriel. A alteração não foi realizada no banco. Obrigado.

Por nada, Dirley! Sempre que tiver qualquer dúvida é só mandar aqui no fórum da Alura!

Grande abraço e bons estudos, meu aluno!