我正在Java Hibernate中构建一个小程序,处理DBLP数据库的子部分(从XML解析为SQL数据库)。
我查询操作大块数据,所以我想将输出结果限制为10,以便更快。
Query query = this.session.createQuery("select A.author_id "
+ "from publication as P "
+ "join P.authors as A "
+ "where P.year <= 2010 and P.year >= 2008 "
+ "group by A.author_id "
+ "having count(distinct P.year) = 3");
query.setMaxResults(10);
this.authors = query.iterate();
该段代码应该检索所有在2008年至2010年期间每年至少发布一次的作者。
我的问题是行“query.setMaxResults(10);”根本没有效果,Hibernate生成的SQL命令是
select author2_.Author_id as col_0_0_ from publication publicatio0_ inner join author_publication authors1_ on publicatio0_.Publication_ID=authors1_.publication_id inner join author author2_ on authors1_.author_id=author2_.Author_id where publicatio0_.Year<=2010 and publicatio0_.Year>=2008 group by author2_.Author_id having count(distinct publicatio0_.Year)=3
limit ?
Remarque“限制?”最后。
所以我的问题很简单,如何正确使用setMaxResults来获取正确的SQL限制?
编辑:所有限制的东西都运行正常,我误解了在SQL中使用限制,我正在寻找的是一种在找到对应于条件的给定行数后停止执行查询的方法,因此,不需要花费数天就可以获得数千个无用的行,而只需返回10个首先找到的行。提前致谢!