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

Problema na hora da busca de Many To Many

Estou com o seguinte código

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

        Categoria categoria = new Categoria();
        categoria.setId(1);


        String jpql = "select m from Movimentacao m join m.categoria c where c = :pCategoria";

        Query query = em.createQuery(jpql); // Fazendo a instância do método Query
        query.setParameter("pCategoria", categoria);

Só que quando executo dá um erro de objeto em Trasient


Exception in thread "main" java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.alura.financas.modelo.Categoria

    at br.com.alura.financas.teste.TesteMovimentacoesPorCategoria.main(TesteMovimentacoesPorCategoria.java:28)
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.alura.financas.modelo.Categoria
1 resposta
solução!

Oi Isaac, tudo bem?

Você deve incluir cascade = CascadeType.ALL no mapeamento de sua coleção. Esse erro ocorre porque você tem uma coleção em sua entidade e essa coleção tem um ou mais itens que não estão presentes no banco de dados. Com CascadeType.ALL você diz ao hibernate para salvá-las no banco de dados ao salvar sua Categoria.