PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A anotação Spring Boot Query com nativeQuery não funciona no Postgresql


Ok, eu gasto muito tempo tentando fazer isso funcionar para mim, MAS FINALMENTE CONSEGUI. Deixe os futuros aventureiros e a comunidade saberem disso também.

O que funcionou para mim foi lançar no intervalo apresentado por A.H. aqui:
select current_timestamp + ( 2 || ' days')::interval;

Sua solução seria então algo assim (quando a 2ª consulta for analisada):
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)

Ou para a terceira consulta (que é exatamente como fiz funcionar no meu caso)
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)

Observe o escape :: torna-se \\:\\: . Em seu SQL puro que você testaria em seu editor SQL, use :: , mas no código do seu repositório dentro de @Query esses sinais de lançamento precisam ser escapados (caso contrário, seu Hibernate/JPA ficará desagradado).