PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'annotation Spring Boot Query avec nativeQuery ne fonctionne pas dans Postgresql

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).