statistique avec des requetes HQL
Bonjour
je veux récupérer le nombre de chaque type de tickets enregistrés dans la base dans une liste pendant une durée précis en fait j'ai réussi à les récupérer séparement mais je ne parviens pas à les récupérer dans une liste (en fait j'ai une entité ticket qui a un attribut status de type string qui peut avoir certains types ("invalid"-"closed"-"resolved"-"invalid")
voilà ce que j'ai fait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public Number countTicketResolved(Date start, Date end,String resolved)
{
String query = "select count(ticket.id) from TicketEntity ticket where lower(ticket.status)='"+resolved.toLowerCase()+"'"+" and ticket.dateCreation >= :debut and ticket.dateCreation<= :fin";
javax.persistence.Query q = ticketDao.getEntityManager().createQuery(query);
q.setParameter("debut", start);
q.setParameter("fin", end);
Number countResult = (Number)q.getSingleResult();
System.out.println("Count resolved ticket result:" + countResult);
return countResult;
}
public Number countTicketInvalid(Date start, Date end,String invalid)
{
String query = "select count(ticket.id) from TicketEntity ticket where lower(ticket.status)='"+invalid.toLowerCase()+"'"+" and ticket.dateCreation >= :debut and ticket.dateCreation<= :fin";
javax.persistence.Query q = ticketDao.getEntityManager().createQuery(query);
q.setParameter("debut", start);
q.setParameter("fin", end);
Number countResult = (Number) q.getSingleResult();
System.out.println("Count invalid ticket result:" + countResult);
return countResult;
}
public Number countTicketClosed(Date start, Date end,String closed)
{
String query = "select count(ticket.id) from TicketEntity ticket where lower(ticket.status) ='"+closed.toLowerCase()+"'"+" and ticket.dateCreation between :debut and :fin";
javax.persistence.Query q = ticketDao.getEntityManager().createQuery(
query);
q.setParameter("debut", start);
q.setParameter("fin", end);
Number countResult = (Number) q.getSingleResult();
System.out.println("Count closed ticket result:" + countResult);
return countResult;
} |
ce code me retourne des résultats juste mais moi je veux récuperer toutes ces valeurs dans une list donc j'ai essayé le case when mais ça n'a pas marché :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public List CountTicketsByStatus(Date start, Date end,String invalid,String cc) {
String query = "select count(ticket.id) from TicketEntity ticket where ticket.dateCreation between :debut and :fin";
query=query + "CASE WHEN(ticket.Status=Invalid)" +
" CASE WHEN(ticket.Status=New)";
javax.persistence.Query q = ticketDao.getEntityManager().createQuery(query);
q.setParameter("invalid", invalid);
q.setParameter("New",cc);
q.setParameter("debut", start);
q.setParameter("fin", end);
List countResult =q.getResultList();
for (int i = 0; i < countResult.size(); i++) {
System.out.println("les éléments de la liste");
Integer t =(Integer)countResult.get(i);
System.out.println(t);
}
return countResult; |
svp pouvez vous m'aidez?