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