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();
On vous en dit plus sur le nouveau projet de JetBrains, Kotlin Multiplatform Mobile.
Les profils de développeur junior peuvent-ils encore avoir la côte auprès des entreprises ? Aujourd’hui (en 2026), à moins d’être perdu au fin fond de la Maurienne, il est devenu rare de passer une journée sans entendre parler d’intelligence artificielle. Sur LinkedIn, dans les médias, ou même autour de la machine à café, le sujet est partout, et avec lui revient toujours la même question : le métier de développeur est-il en train de disparaître ?
Découvrez la planche #50 !