Estou recebendo resultados diferentes do exercício dado em aula. Tenho a seguinte classe:
public class TesteFuncoesJPQL {
public static void main(String[] args) {
EntityManager em = new JPAUtil().getEntityManager();
em.getTransaction().begin();
Conta conta = new Conta();
conta.setId(2);
String jpql = "select distinct avg(m.valor) from Movimentacao m where m.conta = :pConta" +
" and m.tipo = :pTipo" +
" group by m.data";
TypedQuery<Double> query = em.createQuery(jpql, Double.class);
query.setParameter("pConta", conta);
query.setParameter("pTipo", TipoMovimentacao.SAIDA);
List<Double> medias = query.getResultList();
for (Double media : medias) {
System.out.println("A média é " + media);
}
em.getTransaction().commit();
em.close();
}
}
Que está exatamente igual à classe dada em aula. O meu banco de dados está com as datas diferentes das datas da aula, mas tenho somente duas datas. Os dados do banco estão assim:
id data descricao tipo valor conta_id
1 2017-05-12 10:53:06 Viagem a SP SAIDA 100.00 2
2 2017-05-12 10:53:06 Viagem ao RJ SAIDA 300.00 2
3 2017-05-12 11:58:01 Viagem a SP SAIDA 100.00 2
4 2017-05-13 11:58:02 Viagem ao RJ SAIDA 300.00 2
Se tenho duas datas, acho que deveria ter duas linhas de média, mas estou recebendo três quando rodo esta classe:
A média é 200.0
A média é 100.0
A média é 300.0
Lendo agora os resultados me parece que o "group by" está considerando a hora no joint. Com fazer para o joint pegar apenas a data e não a hora? Acredito que esta seja a pergunta correta. rs
Muito grato.