Bonjour, voici mon probleme :
Je souhaite utiliser une requête sql native pour récupérer une liste d'éléments comprenant 4 champs (dont des valeurs correspond à des "COUNT" et des "SUM").
J'ai donc créé un classe nommée Application.class :
et dans l'implémentation de mon DAO, j'ai le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 import java.util.Date; public class Application { private String name; private int nbLogs; private int nbErrors; private Date lastDate; //... plus getters et setters...
Malheureusement, ce code ne marche pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 String sql = "SELECT APPLICATION as {app.name}, " + "COUNT(DISTINCT(EVENT_ID)) as {app.nbLogs}, " + "SUM(DECODE(SEVERITY, 'ERROR', 1, 0)) as {app.nbErrors}, " + "MAX(DATETIME) as {app.lastDate} " + "FROM " + "(SELECT APPLICATION,EVENT_ID, SEVERITY, DATETIME"+ " FROM TECHNICAL_LOGS "+ " WHERE ENV='IT'"+ " union all"+ " SELECT APPLICATION, EVENT_ID, SEVERITY, DATETIME "+ " FROM BUSINESS_LOGS "+ " WHERE ENV='IT'"+ ") "+ " GROUP BY APPLICATION"+ " ORDER BY APPLICATION"; List <Application>appli = (List <Application>)session.createSQLQuery(sql) .addEntity("app",Application.class) .list();
Pourriez-vous m'expliquer ce que j'ai mal compris dans l'utilisation du addEntity ?
Le code suivant fonctionne correctement mais ne renvois pas une List castée comme Application.class, ce qui est mon but...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 String sql = "SELECT APPLICATION as name, " + "COUNT(DISTINCT(EVENT_ID)) as nbLogs, " + "SUM(DECODE(SEVERITY, 'ERROR', 1, 0)) as nbErrors, " + "MAX(DATETIME) as lastDate " + "FROM " + "(SELECT APPLICATION,EVENT_ID, SEVERITY, DATETIME"+ " FROM VAXIBUS_TECHNICAL_LOGS "+ " WHERE ENV='IT'"+ " union all"+ " SELECT APPLICATION, EVENT_ID, SEVERITY, DATETIME "+ " FROM VAXIBUS_BUSINESS_LOGS "+ " WHERE ENV='IT'"+ ") "+ " GROUP BY APPLICATION"+ " ORDER BY APPLICATION"; List appli = session.createSQLQuery(sql).list();
Partager