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

Não precisava de um Persist ?

em.getTransaction().begin();
Produto produto = em.find(Produto.class, 1l);
em.persist(produto) *AQUI*
produto.setDescricao(“Teste 1”);
em.flush();
em.clear();
em.remove(produto);
em.getTransaction().commit();
em.close();

Não precisava de um em.persist(produto) pra passar ele de TRANSIENT para MENAGED?

Agradeço desde já !

3 respostas
solução!

Olá Alan, tudo bem com você?

O produto já estava salvo no banco de dados e ao chamarmos o método em.find(Produto.class, 1l), esse produto com o id de valor 1 passou para o estado MANAGED.

diagrama estados das entidades

Fonte: https://www.objectdb.com/java/jpa/persistence/managed

Fez sentido? Qualquer dúvida é só avisar! ;)

Forte abraço e bons estudos!!

Oi Alan,

O produto não está transient, pois você não deu new para criar um novo produto, mas carregou ele do banco de dados com o método find.

Quando fazemos uma consulta, via método find ou via `query, automaticamente as entidades carregadas do banco já estarão no estado managed

Bons estudos!

Obrigado Thiago e Rodrigo, ficou bem claro...

Na aula o "find" não ficou muito claro pra mim, eu devo ter deixado passar algo... Mas, com essas explicações eu entendi perfeitamente !

Vlw !