sql >> Base de Datos >  >> RDS >> PostgreSQL

La anotación Spring Boot Query con nativeQuery no funciona en Postgresql

Ok, pasé mucho tiempo tratando de hacer que esto funcionara para mí, PERO FINALMENTE LO CONSEGUÍ. Que los futuros aventureros y la comunidad también lo sepan.

Lo que funcionó para mí fue lanzar a intervalos presentado por A.H. aquí:

select current_timestamp + ( 2 || ' days')::interval;

Su solución sería entonces algo así (cuando se analiza la segunda consulta):

@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)

O para la tercera consulta (que es exactamente como lo hice funcionar en mi caso)

@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)

Tenga en cuenta que se escapa :: se convierte en \\:\\: . En su SQL puro que probaría en su editor de SQL use :: , pero en su código de repositorio dentro de @Query estos signos de lanzamiento deben escaparse (de lo contrario, su Hibernate/JPA no estará satisfecho).