Ao tentar inserir a movimentacao2 estou com o seguinte erro de Constraint, consigo inserir uma por execução só.
ERROR: HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement]
Exception in thread "main" javax.persistence.RollbackException: Error while committing the transaction
public class TesteMovimentacoesComCategoria {
public static void main(String[] args) {
Categoria categoria1 = new Categoria("Viagem");
Categoria categoria2 = new Categoria("Negócios");
Conta conta = new Conta();
conta.setId(2);
Movimentacao movimentacao1 = new Movimentacao();
movimentacao1.setData(Calendar.getInstance());
movimentacao1.setDescricao("Mercadinho");
movimentacao1.setTipo(TipoMovimentacao.SAIDA);
movimentacao1.setValor(new BigDecimal("400.0"));
movimentacao1.setCategorias(Arrays.asList(categoria1, categoria2));
movimentacao1.setConta(conta);
Movimentacao movimentacao2 = new Movimentacao();
movimentacao2.setData(Calendar.getInstance());
movimentacao2.setDescricao("Casa Nostra");
movimentacao2.setTipo(TipoMovimentacao.SAIDA);
movimentacao2.setValor(new BigDecimal("500.0"));
movimentacao2.setCategorias(Arrays.asList(categoria1, categoria2));
movimentacao2.setConta(conta);
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
em.persist(categoria1); // Agora a 'categoria1' é Managed
em.persist(categoria2); // Agora a 'categoria2' é Managed
em.persist(movimentacao1);
em.persist(movimentacao2);
em.getTransaction().commit();
em.close();
}
}