Как динамически передавать предельные и отключенные значения в собственном запросе - PullRequest
0 голосов
/ 21 февраля 2019

Я использую собственный запрос для получения результатов разбивки на страницы из PostgreSQL, и я использовал этот запрос и получаю следующее исключение:

SELECT a.*
  FROM table1 a LEFT OUTER JOIN table2 b ON a.clmn1 = b.clmn1
  WHERE (a.clmn3 = ?3 OR a.clmn4 ISNULL)
  ORDER BY a.clmn1 DESC offset = ?1 limit = ?2

Запрос:

@Query(nativeQuery = true, value="select a.* from table1 a left outer join table2 b ON a.clmn1 = b.clmn1 where (a.clmn3= ?3 OR a.clmn4 isnull) order by a.clmn1 desc offset = ?1 limit = ?2")
public List<Result> getResults(int offset, int limit, int value);

Исключение:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "="

Пожалуйста, предложите.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я полагаю, что ошибка составляет

offset = ?1 limit = ?2

https://www.postgresql.org/docs/8.0/queries-limit.html

Не требуется '=' для смещения и ограничения

0 голосов
/ 21 февраля 2019

В вашем запросе есть синтаксическая ошибка.Удалите = и предпочитайте именованные параметры, такие как:

@Query(nativeQuery = true, value = "SELECT a.* FROM table1 a "
    + " LEFT OUTER JOIN table2 b"
    + " ON a.clmn1 = b.clmn1 "
    + " WHERE (a.clmn3= ?3 OR a.clmn4 IS NULL) "
    + " ORDER BY a.clmn1 DESC OFFSET :offset LIMIT :limit ")
public List<Result> getResults(@Param("offset")int offset, 
                               @Param("limit")int limit, int value);

Отказ от ответственности : не проверялось, как работает введение параметров, но синтаксис должен быть таким

...