如何在休眠中设置内部查询的限制?

2022-09-03 07:27:55

我有这样的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 编写的查询。您需要在 Query 对象上调用 setMaxResults,我想这会阻止您对 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();

-->(也使用子选择)


推荐