Récupérer un tableau statistique.
Je souhaite faire des requêtes SQL statistiques pour un module de reporting.
(Ma couche de persistence utilise déjà hibernate)
Aujourd'hui, j'aimerais savoir dans quelle mesure il est possible de faire mes requetes statistiques avec hibernate. Celles-ci me renvoyant une matrice de données statistiques de dimensions non connues...
Peut on mapper un tableau de données de dimensions inconnues ?
Peut on créer un type de données adéquate ?
Dois je utiliser l'API JDBC renvoyée par la session Hibernate ?
Autre solution ?
Merci à toute personne ayant une réponse à me donner.
Récupérer un tableau statistique [bis]
Oui je comprends cette réponse.
Mais mon besoin est assez spécial. Les données statistiques peuvent être récupérées sous forme de tableau. L'API java JDBC me permet de récupérer un ResultSet dont le nombre de colonne dépend de la requéte envoyée.
"select id,name from matable order by id;"
me renvoie un ResultSet contenant 2 colonnes et x lignes.
"select count(*),id,name,lastname from matable order by id;"
me renvoie un ResultSet contenant 4 colonnes et x lignes.
J'aimerais savoir si je peux utiliser Hibernate pour générer des objects "tableaux" ressemblant au fonctionnement du ResultSet de l'API java.
J'espère avoir été plus clair dans l'explicitation de mon problème.
J'ai trouvé une solution ...
:D Je crois que j'ai trouvé dans la doc Hibernate. Je joins ici la solution trouvée :
En tout cas merci de ton aide. A bientôt.
"10.4.1.3. Résultats scalaires
Des requêtes peuvent spécifier une propriété d'une classe dans la clause select. Elles peuvent même appeler des fonctions d'aggrégat SQL. Les propriétés ou les aggrégats sont considérés comme des résultats "scalaires" (et pas des entités dans un état persistant).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Iterator results = sess.createQuery(
"select cat.color, min(cat.birthdate), count(cat) from Cat cat " +
"group by cat.color")
.list()
.iterator();
while ( results.hasNext() ) {
Object[] row = (Object[]) results.next();
Color type = (Color) row[0];
Date oldest = (Date) row[1];
Integer count = (Integer) row[2];
.....
} |
"