sql >> Databasteknik >  >> RDS >> PostgreSQL

Spring Boot Query-anteckning med nativeQuery fungerar inte i Postgresql

Ok, jag spenderar väldigt lång tid på att försöka få det här att fungera för mig, MEN JAG FÅR DET ÄNTLIGEN. Låt även framtida äventyrare och samhället veta det.

Det som fungerade för mig var casting till intervall som presenterades av A.H. här:

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

Din lösning skulle då vara något liknande (när den andra frågan analyseras):

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

Eller för den tredje frågan (vilket är exakt hur jag fick det att fungera i mitt fall)

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

Observera att :: escapes blir \\:\\: . Använd :: i din rena SQL som du skulle testa i din SQL-editor , men i din förvarskod inom @Query dessa gjutningsskyltar måste undkomma (annars kommer din Hibernate/JPA att bli missnöjd).




  1. PostgreSQL 9.6:Parallell Sequential Scan

  2. Ordna om/återställ automatisk inkrementering av primärnyckeln

  3. Utför lagrad procedur med en utdataparameter?

  4. Skapa en utlösare som uppdaterar en kolumn i en tabell när en kolumn i en annan tabell uppdateras