PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'annotazione Spring Boot Query con nativeQuery non funziona in Postgresql

Ok, passo davvero molto tempo a cercare di farlo funzionare per me, MA FINALMENTE L'HO CAPITO. Fallo sapere anche ai futuri avventurieri e alla community.

Ciò che ha funzionato per me è stato il casting per l'intervallo presentato da A.H. qui:

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

La tua soluzione sarebbe quindi qualcosa del genere (quando viene analizzata la seconda query):

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

O per la terza query (che è esattamente come l'ho fatto funzionare nel mio caso)

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

Notare l'escape di :: diventa \\:\\: . Nel tuo SQL puro che testerai nel tuo editor SQL usa :: , ma nel codice del tuo repository all'interno di @Query questi segni di fusione devono essere evitati (altrimenti il ​​tuo Hibernate/JPA sarà scontento).