Как установить предел для внутреннего запроса в Hibernate?

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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