Это было опубликовано на форуме Hibernate несколько лет назад, когда его спросили о том, почему это работает в Hibernate 2, но не в Hibernate 3:
Предел был никогда поддерживаемое предложение
в HQL. Вы должны использовать
setMaxResults ().
Так что, если он работал в Hibernate 2, похоже, что это было случайно, а не по замыслу. Я думаю это произошло потому, что анализатор HQL Hibernate 2 заменил бы биты запроса, который он распознал как HQL, и оставил бы все остальное, как было, чтобы вы могли проникнуть в какой-то собственный SQL. Hibernate 3, однако, имеет правильный синтаксический анализатор AST HQL, и он намного менее прощающий.
Я думаю, Query.setMaxResults()
действительно ваш единственный вариант.