Consegui fazer a query por data, porem quando tento inserir outro criterio, ex: media por data / conta. Aí nao vai. Consigo fazer essas queries com 2 criterios distintos desta forma?
public class TestaAvgDasMovimentacoes {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
String jpql2 = "Select new br.com.rodev.jpa.modelo.MediaComData(avg(m.valor), day(m.data), month(m.data), year(m.data), m.conta_id)"
+ " from Movimentacao m group by day(m.data), month(m.data), year(m.data), m.conta_id";
TypedQuery<MediaComData> query2 = em.createQuery(jpql2, MediaComData.class);
List<MediaComData> mediasComDatas = query2.getResultList();
for (MediaComData mediaComData : mediasComDatas) {
System.out.println("Media do dia " + mediaComData.getDia() + "/" + mediaComData.getMes() + "/" + mediaComData.getAno() + ": R$" + mediaComData.getMedia());
}
Consegui fazer apenas dividindo em 2 queries, seria este o caso?
public class TestaSomaDasMovimentacoes {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("contas");
EntityManager em = emf.createEntityManager();
String jpql = "Select id from Conta";
String jpql2 = "Select sum(m.valor) from Movimentacao m where conta_id = :pConta";
TypedQuery<Long> query = em.createQuery(jpql, Long.class);
TypedQuery<BigDecimal> query2 = em.createQuery(jpql2, BigDecimal.class);
List<Long> contas = query.getResultList();
for (Long conta : contas) {
System.out.println(conta);
query2.setParameter("pConta", conta);
BigDecimal soma = query2.getSingleResult();
System.out.println(soma);
}
}
}