Bonjour,
J'ai fait quelques recherche sur le forum mais je n'ai rien trouvé de bien concluant sur le sujet.
Je dois faire une requête sur une table comportant une période de date. Une période dont la date de fin n'a pas été définie a cette information qui vaut NULL.
Ma requête (en SQL) ressemble donc à
Code:
SELECT * FROM TABLE
WHERE TABLE.date_debut <= :madate
AND (TABLE.date_fin IS NULL OR TABLE.date_fin >= :madate)
Avec une telle requête, sur une base Oracle, les performances s'effondrent.
La première solution qui m'a été soufflée a été d'alimenter les dates nulles avec 31/12/9999 et de supprimer la condition sur le IS NULL.
Ce n'est pas très pratique à gérer, surtout dans l'IHM.
Ensuite, en Oracle toujours, on m'a parlé de la fonction NVL, à utiliser comme suit
Code:
SELECT * FROM TABLE
WHERE TABLE.date_debut <= :madate
AND NVL(TABLE.date_fin, :madate) >= :madate
Comme la base de donnée utilisée peut varier, existe-t-il une méthode Hibernate qui me ferait cela de manière générique ?
Et si oui, à partir de quelle version ?
Merci de vos réponses.