Bonjour,

J'ai un petit problème avec une requête HQL et je n'arrive pas bien à comprendre d'ou ça vient:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
executeHqlQuery("SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie
WHERE profilVoie.dispositifDeRetenueGauche.hauteur>5 OR profilVoie.dispositifDeRetenueDroit.hauteur>5");
Le problème est qu'un ProfilVoie pour lequel le champs dispositifDeRetenueGauche ou dispositifDeRetenueDroit est null (et même si l'autre dispositif répond au critère) ne sera pas renvoyé dans la liste des résultats.

J'ai essayé quelques trucs comme ajouter une condition de non nullité avant de tester la hauteur mais ca n'a rien changé, la seule solution que j'ai trouvé c'est de faire ça avec des requêtes imbriquées:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
executeHqlQuery("SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.id IN 
(SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.dispositifDeRetenueGauche.hauteur>5) 
OR profilVoie.id IN 
(SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.dispositifDeRetenueDroit.hauteur>5)");
C'est pas vraiment gênant comme solution mais ça ajoute quand même pas mal de code, c'est moins optimisé, et j'aimerais bien comprendre le problème de la première requête aussi en fait vu que le cas n'est pas si rare.

Voila merci d'avance.
Laurent.