Boa noite. O método da EntityManager que faz a persistência é void, como faria para retorno o id ou objeto inteiro gravado?
Acredito não ser uma boa prática, mas pensei em fazer uma select usando Max(id) após executar a rotina.
Boa noite. O método da EntityManager que faz a persistência é void, como faria para retorno o id ou objeto inteiro gravado?
Acredito não ser uma boa prática, mas pensei em fazer uma select usando Max(id) após executar a rotina.
Boa noite Thiago.
Uma vez que você salva a entidade no banco de dados, ela fica em modo "Managed", ou seja, fica em "paridade" com os dados salvos no DB. Sendo assim, é possível recuperar o ID do objeto ao acessar seus atributos.
Neste cenário você pode utilizar o complemento de código abaixo para recuperar o ID e retornar.
public static void main(String[] args) {
Produto celular = new Produto();
celular.setNome("Xiaomi Redmi");
celular.setDescricao("Muito legal");
celular.setPreco(new BigDecimal("800"));
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("loja");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.persist(celular);
em.getTransaction().commit();
em.close();
//Recuperando o ID do objeto criado no DB
System.out.println("ID do Celular Salvo no DB: " + celular.getId());
}
Mais info sobre estado: https://www.alura.com.br/artigos/entidades-managed-transient-e-detached-no-hibernate-e-jpa
Olá Fernanda, bom dia.
Obrigado pela ajuda!