Dobře, trávím opravdu dlouhou dobu snahou, aby mi to fungovalo, ALE KONEČNĚ JSEM TO DOSTAL. Dejte to vědět i budoucím dobrodruhům a komunitě.
Co se mi osvědčilo, byl casting do intervalu, který představil A.H. zde:
select current_timestamp + ( 2 || ' days')::interval;
Vaše řešení by pak bylo něco takového (když je analyzován 2. dotaz):
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( :interval )\\:\\:interval ", nativeQuery = true)
Nebo pro 3. dotaz (což je přesně tak, jak jsem to udělal v mém případě)
@Query(value = "SELECT n.* from nodes n WHERE n.node_id = 10510 AND n.last_good_ping > CURRENT_DATE - ( ?1 )\\:\\:interval", nativeQuery = true)
Všimněte si prosím escapování ::
se změní na \\:\\:
. Ve vašem čistém SQL, který byste testovali ve vašem SQL editoru, použijte ::
, ale v kódu vašeho úložiště v rámci @Query
tyto vrhací znaky je třeba uniknout (jinak bude vaše Hibernate/JPA nespokojená).