PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Анотацията на Spring Boot Query с nativeQuery не работи в Postgresql

Добре, прекарвам много време, опитвайки се да накарам това да ми свърши работа, НО НАЙ-КРАЯ ГО РАЗБИХ. Нека бъдещите авантюристи и общността също го знаят.

Това, което работи за мен, беше кастинг към интервал, представен от A.H. тук:

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

Вашето решение би било тогава нещо подобно (когато се анализира 2-ра заявка):

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

Или за 3-та заявка (което е точно как я накарах да работи в моя случай)

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

Моля, обърнете внимание на екранирането на :: става \\:\\: . Във вашия чист SQL, който бихте тествали във вашия SQL редактор, използвайте :: , но в кода на вашето хранилище в рамките на @Query тези знаци за хвърляне трябва да бъдат избегнати (в противен случай вашият Hibernate/JPA ще бъде недоволен).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените локала при форматиране на числа в PostgreSQL

  2. ГИС:PostGIS/PostgreSQL срещу MySql срещу SQL Server?

  3. Не може да се свърже с локалния PostgreSQL

  4. Заявка за брой различни стойности в подвижния период от време

  5. Промяна на поле Enum с помощта на Alembic