Ok, spędzam naprawdę dużo czasu, próbując sprawić, by to działało dla mnie, ALE WRESZCIE TO ZROBIŁEM. Niech poznają to także przyszli poszukiwacze przygód i społeczność.
U mnie sprawdził się casting na interwał przedstawiony przez A.H. tutaj:
select current_timestamp + ( 2 || ' days')::interval;
Twoje rozwiązanie byłoby wtedy czymś takim (przy analizie drugiego zapytania):
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)
Lub dla trzeciego zapytania (dokładnie tak zrobiłem to w moim przypadku)
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)
Zwróć uwagę na ucieczkę ::
staje się \\:\\:
. W swoim czystym SQL, który testujesz w swoim edytorze SQL, użyj ::
, ale w kodzie repozytorium w @Query
te znaki rzutowania muszą zostać usunięte (w przeciwnym razie Twój Hibernate/JPA będzie niezadowolony).