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

Mais de um campo com jpql

Boa noite!

Gostaria de saber como posso fazer para trazer mais de um campo em uma jpql, por exemplo do exercicio em que trago média das movimentações por dia, gostaria tambem além da média trazer o dia respectivo da média

3 respostas

Bom dia Thales,

Sem conhecer o modelo das suas entidades fica difícil montar a jpql para você, mas é possível sim, vou tentar dar um exemplo qualquer já que não sei como é seu modelo:

Query query = em.createQuery("select avg(m.valor), m.data from Movimentacao m group by m.data");
List<Object[]> resultado = query.getResultList();
Object[] elemento1 = resultado.get(0);
System.out.println("Media valor: " elemento1[0]);
System.out.println("Data: " elemento1[1]);

O retorno deste tipo de consulta com jpql é uma List de Array de Object. Ou seja, cada elemento da lista é um array de Object, e cada indice deste array tem os campos que você solicitou na query.

Espero ter ajudado, abraços.

Bom dia!

Legal com isso ja consegui trazer as datas, ainda que tenha que formatar ela.

Mas e se eu tivesse um ListArray com muitos indices, como ficaria para localizar qual é a data e qual é a média?

solução!

Sim vai precisar formatar, não tem pra onde correr.

É na ordem que foi especificado no select, por exemplo, na minha jpql eu coloquei primeiro a média, depois a data. Logo para cada array de Object retornado, no índice 0 estará a média, e no 1 a data.

Se você tiver uma query com 10 campos, saberá que cada array de Object terá os campos retornados nos índices de 0 a 9, na ordem especificada na query.