Предложение LIMIT используется для установки предела количества строк в наборе результатов. Вы получаете синтаксическую ошибку из-за неправильного использования этого предложения HQL.
Запрос может быть записан следующим образом, чтобы вернуть не более 2000 строк:
SELECT * FROM table LIMIT 2000;
Вы также можете написать это так, чтобы возвращать не более 1000 строк:
SELECT * FROM table LIMIT 1000;
Однако вы не можете объединить оба в один и тот же аргумент для LIMIT. Аргумент LIMIT должен принимать постоянное значение.
Я попытаюсь немного расширить эту информацию, чтобы попытаться решить вашу проблему. Если вы пытаетесь «разбить» на страницы ваши результаты, может быть полезно следующее.
ПЕРВЫЙ Я бы рекомендовал не использовать HQL для разбивки на страницы, в большинстве случаев это было бы более эффективно реализовано на стороне логики приложения (запрос большого набора результатов, кеширование того, что вам нужно, разбиение на страницы с логикой приложения). Если у вас нет выбора, кроме как вытащить диапазоны строк, вы можете получить желаемый эффект с помощью комбинации предложений LIMIT, ORDER BY и OFFSET.
LIMIT: это ограничит ваш набор результатов максимальным количеством строк
ORDER BY: Это позволит отсортировать / упорядочить ваш набор результатов на основе одного или нескольких столбцов
OFFSET: Это приведет к тому, что ваш результирующий набор начнет с определенной строки после логической первой записи в таблице.
Вы можете объединить эти три предложения для эффективного запроса «страниц» вашей таблицы. Например, следующие три запроса показывают, как получить первые 3 блока данных из таблицы, где каждый блок содержит 1000 строк, а целевой столбец 'column1' используется для определения логического порядка.
SELECT title as "Page 1", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 0;
SELECT title as "Page 2", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 1000;
SELECT title as "Page 3", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 2000;
Каждый запрос объявляет 'column1' в качестве значения сортировки с ORDER BY. Запросы будут возвращать не более 1000 строк из-за предложения LIMIT. Каждый набор результатов будет начинаться с отдельной строки, так как значение OFFSET увеличивается на «размер страницы» для каждого запроса.