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

Ex.10 - Aula 06 - JPA e Java 8

Pessoal, me surgiu uma dúvida Quando eu fiz o exercício, é retornado uma lista, então tentei usar primeiramente o for each da interface iterable do Java 8, desta forma:

        EntityManager entityManager = new JPAUtil().getEntityManagerFactory();

        Query query = entityManager.createQuery("select distinct c from Conta c join fetch c.movimentacoes");

        List <Conta> contas = query.getResultList();

        contas.forEach(c -> System.out.println(c.getMovimentacoes().size()));

        entityManager.close();

Mas com isto é lançado a seguinte exception:

Exception in thread "main" javax.persistence.PersistenceException: Unable to configure EntityManagerFactory

Se eu usar o For Each padrão, ele funciona normalmente:

        EntityManager entityManager = new JPAUtil().getEntityManagerFactory();

        Query query = entityManager.createQuery("select distinct c from Conta c join fetch c.movimentacoes");

        List <Conta> contas = query.getResultList();

        for (Conta conta : contas) {
            System.out.println(conta.getMovimentacoes().size());
        }

        entityManager.close();
    }

Bom, se alguém puder me ajudar. Foi uma dúvida que me deixou intrigado.

Obrigado

2 respostas

Olá Thiago,

o estranho da sua Exception é que ela fala que não conseguiu configurar o EntityManagerFactory. Poderia postar toda a stacktrace da exception para eu dar uma olhada mais a fundo no que aconteceu? Meu chute dado que para o forEach padrão funcionou é que o tipo de lista retornado pelo framework JPA que você usou ainda não suporta a implementação do forEach da List no Java 8.

solução!

Lucas, o problema era a versão do Java mesmo. Estava dando conflito com o retorno da lista e quando usava o For Each do Iterable, ele dava aquele erro nada a ver. Consegui resolver atualizando a versão da biblioteca Javaassist, da versão 3.15 para a versão 3.20.

Obrigado