Bonjour,
Je tente depuis deux jours maintenant de trouver une solution à mon problème mais en vain : je veux utiliser la clause case when then dans une requête HQL (hibernate 3.2.x) qui calcule le montant total d'écritures selon un sens. Le montant étant tjrs positif, le sens permet de savoir si lors de la somme il faut ajouter ou soustraire (d'où le besoin du case when then)
Requête HQL :
Lors de l'appel il n'y aucune erreur de syntaxe et la requête retourne null. Pourtant, j'ai bien un enregistrement qui devrait être retourné. La preuve est que si je modifie la requête en supprimant seulement la partie * et le case et que j'exécute, la requête me retourne bien l'enregistrement voulu (sous forme d'un tableau à deux éléments).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT COUNT(asEcriture), SUM(asEcriture.montant * (CASE WHEN asEcriture.sens = 'CREDIT' THEN 1 ELSE -1 END) ) FROM Ecriture asEcriture JOIN FETCH Compte asCompte WHERE asCompte.id = :pIdCompte GROUP BY asCompte.id
Alors je me demande si le case est bien pris en compte et si tel n'est pas le cas pourquoi je n'ai pas d'erreur de syntaxe ?
Merci
Partager