Ok, j'ai passé beaucoup de temps à essayer de faire fonctionner ça pour moi, MAIS J'AI FINALEMENT COMPRIS. Faites-le également savoir aux futurs aventuriers et à la communauté.
Ce qui a fonctionné pour moi a été le casting à intervalle présenté par A.H. ici :
select current_timestamp + ( 2 || ' days')::interval;
Votre solution serait alors quelque chose comme ça (lorsque la 2ème requête est analysée) :
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)
Ou pour la 3ème requête (c'est exactement comme ça que je l'ai fait fonctionner dans mon cas)
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)
Veuillez noter l'échappement de ::
devient \\:\\:
. Dans votre SQL pur que vous testeriez dans votre éditeur SQL, utilisez ::
, mais dans le code de votre référentiel dans @Query
ces signes de diffusion doivent être échappés (sinon votre Hibernate/JPA sera mécontent).