1
resposta

Exceção em TestandoEstados

Quando dou o run em TestadosEstados, me dá uma exceção no console: Exception in thread "main" java.lang.IllegalStateException: Transaction not successfully started at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:95) at br.com.alura.jpa.testes.TestandoEstados.main(TestandoEstados.java:25)

Process finished with exit code 1

Segue minha classe, que está igual ao professor, podem me ajudar a resolver isso?

package br.com.alura.jpa.testes;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.alura.jpa.modelo.Conta;

public class TestandoEstados {
    public static void main(String[] args) {
        Conta conta = new Conta();
        conta.setTitular("Almiro");
        conta.setAgencia(123);
        conta.setNumero(321);

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("alura");
        EntityManager em = emf.createEntityManager();

        // Transient -> Managed
        em.persist(conta);

        // Managed -> Removed
        em.remove(conta);

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

}
1 resposta

Olá Juliana, tudo bem com você?

De acordo com o erro, a transação não foi iniciada corretamente: Transaction not successfully started at (...).

Nesse caso, acredito que esteja faltando o comando que inicia a transação. Então, antes de fazer qualquer manipulação no banco, precisamos declarar que queremos começar uma transação, deixando dessa forma:

    // Criando classe Conta e EntityManager

    em.getTransaction().begin(); -> abre a transacao

    // Transient -> Managed
    em.persist(conta);

    // Managed -> Removed
    em.remove(conta);

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

Verifica se isso faz sentido e depois me avisa se funcionou! ;)

Se tiver qualquer dúvida é só avisar! Abraços!!