Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hibernate中设置内部查询的限制?_Java_Mysql_Hibernate_Hql - Fatal编程技术网

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

Java 如何在Hibernate中设置内部查询的限制?,java,mysql,hibernate,hql,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关键字。有没有一种方法可以运行这样的查询而不将其拆分为两个子查询?查看 不能使用hql限制用hql编写的查询。您需要在查询对象上调用setMaxResults,我想这将阻止您对hql子查询应用限制 这让你可以选择 将其写入sql查询或 试图找到另一种编写hql查询

我有这样的HQL:

from Table1 t1 where t1.name not in (select t2.name from Table2 t2 order by t2.date limit 10)
问题是它不理解
limit
关键字。有没有一种方法可以运行这样的查询而不将其拆分为两个子查询?

查看

不能使用hql限制用hql编写的查询。您需要在查询对象上调用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();

-->(也可使用子选择)

还有第三个选项。执行两个单独的HQL查询,其中第一个查询的结果将使用Java提供给第二个查询。cherouvim的解决方案将导致原子性问题。