J'ai écrit une requête en utilisant Hibernate Criteria API pour récupérer une somme d'une valeur particulière, maintenant je dois être en mesure de restreindre le résultat aux lignes où cette somme est supérieure ou égale à une valeur particulière.Hibernate Criteria API - HAVING clause work contourne
Normalement, j'utiliserais une clause HAVING dans mon SQL pour ce faire, mais l'API Criteria ne semble pas supporter cela pour le moment.
Dans SQL cru ce que je besoin de le faire:
SELECT user_pk, sum(amount) as amountSum
FROM transaction
GROUP BY user_pk
HAVING amountSum >=50;
Un travail autour que je pensais est d'utiliser un sous-requête dans la clause FROM qui saisit cette valeur de sommation et utiliser une requête externe pour le restreindre en utilisant une clause WHERE.
Ainsi, dans SQL brut, il ressemblera à quelque chose comme:
SELECT user_pk, amountSum
FROM (SELECT user_pk, sum(amount) as amountSum
FROM transaction
GROUP BY user_pk)
WHERE amountSum > 50;
Quelqu'un peut-il me diriger dans la bonne direction à la façon dont je pourrais écrire cela en utilisant l'API de critères ou d'autres suggestions/contournements I peut utiliser pour résoudre le problème HAVING?
Ceci est le code de l'API critères que j'ai pour l'exemple ci-dessus
DetachedCriteria criteria = DetachedCriteria.forClass(Transaction.class,"transaction");
criteria.setProjection(criteria.setProjection(Projections.projectionList().add(
Projections.groupProperty("user.userPK").as("user_pk")).add(
Projections.sum("transaction.amount").as("amountSum")));
Merci à!
c'était il y a 7 ans et toujours pas patché dans hibernate, j'ai besoin d'appliquer le correctif pour la version 4.3.6 ou plus récent mais le code a été changé tellement que je ne sais pas comment le faire. Quelqu'un a ce patch mis à jour? –