Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro Aula 8 JPA

Olá, Estou tentando popular movimentação, como foi feito na aula, porem estou recebemo a seguinte exception: entendi q esta dando erro no commit, mas não entendi o pq.

ERROR: Field 'categoria_id' doesn't have a default value ago 28, 2018 4:50:16 PM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release INFO: HHH000010: On release of batch it still contained JDBC statements ago 28, 2018 4:50:16 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure ERROR: HHH000346: Error during managed flush [org.hibernate.exception.GenericJDBCException: could not execute statement] Exception in thread "main" javax.persistence.RollbackException: Error while committing the transaction

não sei qual o problema, segue meu método main:

public static void main(String[] args) {

    Categoria categoria1 = new Categoria("Escola");
    Categoria categoria2 = new Categoria("Faculdade");

    Conta conta = new Conta();
    conta.setId(27);

    Movimentacao movimentacao1 = new Movimentacao();
    movimentacao1.setData(Calendar.getInstance()); // hoje
    movimentacao1.setDescricao("Mensalidade Escolinha");
    movimentacao1.setTipo(TipoMovimentacao.SAIDA);
    movimentacao1.setValor(new BigDecimal("500.0"));
    movimentacao1.setCategorias(Arrays.asList(categoria1));
    movimentacao1.setConta(conta);

    Movimentacao movimentacao2 = new Movimentacao();

    Calendar amanha = Calendar.getInstance();
    amanha.add(Calendar.DAY_OF_MONTH, 1);

    movimentacao2.setData(amanha);
    movimentacao2.setDescricao("Mensalidade Faculdade");
    movimentacao2.setTipo(TipoMovimentacao.SAIDA);
    movimentacao2.setValor(new BigDecimal("800.0"));
    movimentacao2.setCategorias(Arrays.asList(categoria2));
    movimentacao2.setConta(conta);

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

    em.persist(categoria1); // Agora a 'categoria1' é Managed
    em.persist(categoria2); //

    em.persist(movimentacao1);
    em.persist(movimentacao2);

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

}
1 resposta
solução!

Desculpa, não foi erro de código, foi um vacilo meu aqui.

em algum momento eu mexi em um nome lá, ai a JPA criou mais uma coluna na tabela movimentacao_categoria. ai como eu nao estava setando essa coluna, pq ela nao deveria existir tava dando erro.

Deletei meu banco e repopular ele ai resolveu o problema, desculpa o topco atoa.