Bonjour,
Je travaille sous Oracle 10g, et avec Hibernate.
Voici la tête de ma table ppale PRODUIT (je vous fais cadeau des autres).
PRODUIT_ID
VERSION
CODEPRODUIT
COULEUR
DIMENSIONMAX
PRIX
Ce que j'essaie de faire dans une projection, c'est de regrouper les produits sur certains critères.
Une fois la projection effectuée, je souhaite trier le résultat de la lecture, puisque je vais devoir au vu des dimensions de la table effectuer une lecture par lots, et donc obtenir un résultat parfaitement trié pour ne pas risquer de passer à travers.
public List<BeanProjectionProduit> makeListeBeanProjectionProduit(Criteres criteres, Integer wPremiereLigneALire, Integer tailleDuLot)
{
// Création d'un requête détachée pour la projection
DetachedCriteria criteria = DetachedCriteria.forClass(Produit.class);
// Création d'alias sur des associations
criteria.createAlias("criteres", "crit");
// traitement BeanProjectionProduit
List<BeanProjectionProduit> listBeanProd = null;
final ProjectionList uneProjectionSpe = Projections.projectionList();
// Group by puis count et sum
uneProjectionSpe.add(Projections.groupProperty("couleur"), "couleur").add(
Projections.groupProperty("dimensionMax"), "dimensionMax")add(Projections.rowCount(),
"nbProduits").add(Projections.sum("prix"), "prix");
// Affectation de la projection à la requête
criteria.setProjection(uneProjectionSpe).setResultTransformer(new PrefixedAliasToBeanResultTransformer(BeanProjectionProduit.class));
// tris (non exhaustifs!)
criteria.addOrder(Order.asc("id"));
listBeanProd = getHibernateTemplate().findByCriteria(criteria, wPremiereLigneALire, tailleDuLot);
return listBeanProd;
}
Je sors inexorablement avec une Erreur SQL : ORA-00979: N'est pas une expression GROUP BY
00979. 00000 - "not a GROUP BY expression"
Est-ce à dire que je ne peux pas trier sur l'id? Je pensais que le fait de trier n'influençait en rien sur la projection....
Je vous remercie pour les précisions éventuelles que vous m'apporterez.
Thomas
Partager