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

Programa não é encerrado

Olá,

Não entendo porque após executar meu código, o Programa não é terminado, a thread continua em execução como se estivesse aguardando/executando algum processo.

Isso é sempre quanto uso o EntityManager, segue meu código:

public static void main(String[] args) throws ParseException {


        EntityManager em = new JpaUtil().getEntityManager();
        em.getTransaction().begin();

        Conta conta = em.find(Conta.class, 500);
        Movimentacao movimentacao = createMovimentacao(conta, new BigDecimal("192.4"), TipoMovimentacaoEnum.ENTRADA);

        em.persist(movimentacao);

        em.getTransaction().commit();        
        em.close();

    }

Estou tendo que colocar um System.exit(0) após o em.close, alguém sabe explicar o porque? Valeu!

2 respostas
solução!

Oi Luiz, acho que fica alguma presa na EntityManagerFactory.. Fecha ela e testa? Aqui comigo foi exatamente isso que aconteceu.

Olá Alberto, Era exatamente isso, coloquei um método close no JpaUtil e deu certo :]

public class JpaUtil {

    private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("financas-postgresql");


    public EntityManager getEntityManager(){

        return emf.createEntityManager();
    }

    public void close(){
        emf.close();
    }

}

Valeu!