En SQL, lorsqu’une requête possède une condition sur une colonne sur laquelle porte une clause GROUP BY, cette condition n’est pas exprimée dans la clause WHERE mais dans la clause HAVING.
En SQL, lorsqu’une requête possède une condition sur une colonne sur laquelle porte une clause GROUP BY, cette condition n’est pas exprimée dans la clause WHERE mais dans la clause HAVING.
Si vous savez faire une requête simple avec Hibernate 4, écrire une condition simple et utiliser la clause GROUP BY, la mise en place d’un HAVING ne vous posera pas de problème. Il faut utiliser la méthode having() de votre CriteriaQuery, de la même manière que vous utiliseriez la méthode where() : en lui passant un Predicate en paramètre.
Exemple l’utilisation du multiselect) :
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> criteriaQuery = builder.createQuery(Tuple.class);
Root<Commande> root = criteriaQuery.from(Commande.class);
criteriaQuery.multiselect(root.get(Commande_.date), root.get(Commande_.departement), builder.count(root));
List<Expression<?>> groupList = new ArrayList();
groupList.add(root.get(Commande_.date));
groupList.add(root.get(Commande_.departement));
criteriaQuery.groupBy(groupList);
Predicate predicate = builder.notEqual(root.get(Commande_.departement), "75");
criteriaQuery.having(predicate);
TypedQuery<Tuple> typedQuery = entityManager.createQuery(criteriaQuery);
List<Tuple> result = typedQuery.getResultList();
JSF Le problème de l’id rendering
Concrètement, digitaliser ses processus métiers en entreprise consiste à gérer l'ensemble (une ou partie) de ses processus métiers via des outils informatiques (applications) ou des technologies numériques. Cela implique pas mal de travail et de changements : modes de travail, process, choix d'outils, acculturation et formation des équipes... Mais alors, comment s'y prendre et par où commencer ?
La question "faut-il utiliser l'IA dans votre équipe de développement ?" n'est plus d'actualité en 2026. Vos développeurs l'utilisent déjà (avec ou sans votre avis!). Les questions qu'on va se poser aujourd'hui vont un peu plus loin : sur quelles tâches l'IA "génération de code" a du sens, où est-ce que ça peut poser problème, et comment éviter que ça devienne le Far West dans vos merge requests ? Chez AXOPEN, en tant que développeurs, on s'est confrontés à ces questions au quotidien, et on en a parlé dans notre dernier épisode de podcast.