Как дела предел запрашивает в HQL?

Это проблема с подсветкой синтаксиса редактора.

Никакая реализация уценки не преобразует это в акцент .

224
задан nisarg parekh 20 September 2018 в 22:09
поделиться

5 ответов

Это было размещено на форуме Hibernate несколько лет назад, когда его спросили, почему это работает в Hibernate 2, но не в Hibernate 3:

Предел был никогда поддерживаемый пункт в HQL. Вы должны использовать setMaxResults ().

Так что, если это сработало в Hibernate 2, похоже, что это было случайно, а не намеренно. Я думаю , что это произошло потому, что парсер Hibernate 2 HQL заменил бы биты запроса, которые он распознал как HQL, и оставил все остальное, как было, чтобы вы могли незаметно ввести некоторый родной SQL. В Hibernate 3, однако, есть правильный AST HQL Parser, и он гораздо менее снисходительный.

Я думаю Query.setMaxResults () действительно ваш единственный вариант.

302
ответ дан 23 November 2019 в 03:56
поделиться

Вы можете легко использовать нумерацию страниц.

    @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
    @Query("select * from a_table order by a_table_column desc")
    List<String> getStringValue(Pageable pageable);

Вы должны передать new PageRequest(0, 1) для получения записей и из списка получить первую запись.

0
ответ дан 23 November 2019 в 03:56
поделиться

Если вы не хотите использовать setMaxResults () в объекте Query , тогда вы всегда можете вернуться к использованию обычного SQL.

19
ответ дан 23 November 2019 в 03:56
поделиться

Если вы не хотите использовать setMaxResults, вы также можете использовать Query.scroll вместо list и получать нужные строки. Например, полезно для подкачки.

5
ответ дан 23 November 2019 в 03:56
поделиться

По моим наблюдениям, даже если в HQL (hibernate 3.x) есть limit, он либо вызывает ошибку парсинга, либо просто игнорируется. (если у вас есть order by + desc/asc перед limit, он будет проигнорирован, если у вас нет desc/asc перед limit, это вызовет ошибку парсинга)

0
ответ дан 23 November 2019 в 03:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: