Na aula 3 de 04.Ciclo de vida de uma entidade do curso Persistência com Jpa, vimos que para atualizar uma entidade que está no estado Detached, primeiro, passamos esta entidade para o método merge(). A partida desse método, obtemos uma nova referência para este novo objeto. Após, alteramos o atributo desejado. Em seguida, sincronizamos com flush().Veja:
em.persist(celulares); celulares.setNome(“XPTO”);
em.flush(); em.clear();
celulares = em.merge(celulares); celulares.setNome(“1234”); em.flush();
No entanto, segundo explicação dada em aula, o método "public void atualizar (Categoria categoria)" é um método que recebe a entidade pronta, já alterada, ficando assim:
em.persist(celulares); celulares.setNome(“XPTO”);
em.flush(); em.clear();
celulares.setNome(“1234”)
Categoria Dao categoriaDao = new CategoriaDao; categoriaDao.atualizar(celulares); em.flush();
É isso mesmo, a jpa fará a alteração da entidade celulares para settar o nome para "1234"? Pois, o que aprendemos é que é a nova referência devolvida por em.merge é que deve ser alterada.