-
Paramètre laissé à null
Bonjour,
alors voilà j'ai un petit problème concernant une requete eql.
ma requete :
Code:
em.createQuery("SELECT c FROM CategorieAnnonce c where c.parentCat.idCat=:idCat ORDER BY c.rang").setParameter("idCat", null).getResultList()
Quand mon paramètre idCat est null ma requete me retourne 0 résultat
alors que si je réalise la requete suivante j'ai bien des résultats :
Code:
em.createQuery("SELECT c FROM CategorieAnnonce c where c.parentCat.idCat=NULL ORDER BY c.rang")
J'aurai donc aimé savoir pourquoi je n'ai pas de résultat , et donc comment faire un select sur avec un paramètre null.
-
salut !
Premièrement, je crois bien que le type de langage utilisé n'est pas "eql" mais "hql" pour Hibernate Query Language...enfin bref ca dépends ce que tu utilise et c'est un détails...
Sinon pour ta question, j'ai deux pistes sans pour autant être sur d'avoir la solution ...
Premièrement dans ta requête tu fais un setParameter("idCat",null)
et dans la deuxième where c.parentCat.idCat=NULL ...
Donc déja il y a une incohérence entre tes deux "null" l'un en majuscule, l'autre pas... à tester...
Deuxième point, tes "id" ici idCat ont un type, je suppose "int" ou "long" ou autre...
Donc voir si la valeur "null" est compatible, tester avec d'autres choses des ID existants ... pour voir si le problème ne viens pas de la requête....
Car em.createQuery(...) + .setParameter(...) + getResultList()...
CA fait bcp pour une seule ligne ! je serais toi je décomposerais en plusieurs lignes histoire de mieux situer l'erreur...
Et tu fais une requête en filtrant par "ID", logiquement un id est unique ...
A moins que tu es plusieurs id "NULL" mais meme je crois que si il y a un Id qui vaut "NULL" et bien comme les entiers il devra tout de même être unique ...
Et donc j'utiliserais plutot getSingleResult() que getResultList() car tu devrais avoir un résultat unique ...