PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Spring Boot Query-Annotation mit nativeQuery funktioniert nicht in Postgresql

Ok, ich habe wirklich viel Zeit damit verbracht, das für mich zum Laufen zu bringen, ABER ICH HABE ES ENDLICH. Lass es auch die zukünftigen Abenteurer und die Community wissen.

Was für mich funktioniert hat, war das Casting in Intervalle, die von A.H. hier vorgestellt wurden:

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

Ihre Lösung wäre dann ungefähr so ​​(wenn die 2. Abfrage analysiert wird):

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

Oder für die dritte Abfrage (genau so habe ich es in meinem Fall gemacht)

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

Bitte beachten Sie das Maskieren von :: wird zu \\:\\: . Verwenden Sie in Ihrem reinen SQL, das Sie in Ihrem SQL-Editor testen würden, :: , aber in Ihrem Repository-Code innerhalb von @Query Diese Casting-Zeichen müssen maskiert werden (andernfalls wird Ihr Hibernate/JPA unzufrieden sein).