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

我有这样的HQL:

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

问题是它不了解limit关键字。 有没有办法运行这样的查询而不将其分成两个子查询?

看看你如何在HQL中进行限制查询?

你不能用hql限制用hql编写的查询。 你需要在Query对象上调用setMaxResults,我想这会阻止你对hql子查询应用限制。

这让你可以选择

  • 将其写为sql查询或
  • 试图找到另一种编写hql查询的方法,以便在子查询中不需要限制。

如果您将查询作为SQLQuery提交,然后将您的类添加为实体,则可以使用limit,因为查询是作为sql提交的。 你必须使用sql语法。

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

– >(也使用subselects)