[hibernate] utilisation des fonctions d'aggregation
J'ai lut dans la doc qu'HQL supportait les fonctions comme count() et max(), j'ai donc tenté
Code:
1 2 3 4 5 6 7
|
Query query = _sessionHibernate.createQuery("select max(gs.Niveau) from Groupseg as gs where gs.Idmessage = :idMessage");
query.setInteger("idMessage", _idMessage.intValue() );
for (Iterator it = query.iterate(); it.hasNext();) {
Object[] ligne = (Object[]) it.next();
System.out.println("niveau : " + (Integer) ligne[0] );
} |
en rapport avec le mapping suivant :
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
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="local.gmi.convertisseur.hibernate">
<class name="Groupseg" table="groupseg">
<id
column="IDGS"
name="Idgs"
type="integer"
>
<generator class="vm" />
</id>
<property
column="NIVEAU"
length="6"
name="Niveau"
not-null="true"
type="java.lang.Short"
/>
</class>
</hibernate-mapping> |
Si je met juste gs.Niveau dans le select ça passe mais avec le max() je me retrouve avec une "ClassCastException" dès la ligne "Object[] ligne = (Object[]) it.next();" j'ai testé en castant avec un Short au lieu du Integer pour la récupération du niveau au cas où mais j'obtient rien de mieux...