Как установить ограничение для внутреннего запроса в Hibernate? - PullRequest
11 голосов
/ 29 апреля 2010

У меня HQL вот так:

from Table1 t1 where t1.name not in (select t2.name from Table2 t2 order by t2.date limit 10)

Проблема в том, что он не понимает ключевое слово limit. Есть ли способ выполнить такой запрос, не разбивая его на два подзапроса?

Ответы [ 2 ]

8 голосов
/ 29 апреля 2010

посмотрите на Как вы делаете лимитный запрос в HQL?

вы не можете ограничить запрос, написанный на hql, с помощью hql. Вам нужно вызвать setMaxResults для объекта Query, что, как я полагаю, не позволит вам применить ограничение для hql-подзапроса.

Это оставляет вам возможность

  • запись в виде sql-запроса или
  • пытается найти другой способ написания hql-запроса, чтобы вам не требовалось ограничение в подзапросе.
0 голосов
/ 19 ноября 2015

Если вы отправляете запрос как SQLQuery, а затем добавляете свой класс как сущность, вы можете использовать ограничение, так как запрос будет представлен как sql. Вы должны использовать sql синтаксис, хотя.

String sql = "select * from Supplier limit 1";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Supplier.class);
List results = query.list();

-> (также работает с подвыборками)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...