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

时间:2010-04-29 16:08:55

标签: java mysql hibernate hql

我有这样的HQL:

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

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

2 个答案:

答案 0 :(得分:8)

查看How do you do a limit query in HQL?

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

这使您可以选择

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

答案 1 :(得分:0)

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

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

- > (也使用子选择)