Как установить предел для внутреннего запроса в 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();
- > (также работает с подзапросами)