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

Persistência

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.

2 respostas
solução!

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!