Java 休眠hql和setMaxResults

Java 休眠hql和setMaxResults,java,sql,hibernate,jpa,rownum,Java,Sql,Hibernate,Jpa,Rownum,我和hibernate吵了几架。 我的查询虽然经过优化,但相当繁重。我的优化之一是限制返回的结果集。 因此,对于hibernate,我使用了setMaxResultSet方法,但遇到了本文中描述的相同问题: (问题是在某些情况下使用setMaxResultSet hibernate将查询包装如下: select*from(您的查询),其中rownum我在hibernate中使用相同的分页。下面给出了HQL。它可能对您有用 (i) 最初您应该使用这个查询 List<Object> E

我和hibernate吵了几架。 我的查询虽然经过优化,但相当繁重。我的优化之一是限制返回的结果集。 因此,对于hibernate,我使用了setMaxResultSet方法,但遇到了本文中描述的相同问题:

(问题是在某些情况下使用setMaxResultSet hibernate将查询包装如下:


select*from(您的查询),其中rownum我在hibernate中使用相同的分页。下面给出了HQL。它可能对您有用

(i) 最初您应该使用这个查询

List<Object> Entity_Cls_Lst= Objclass.createQuery("from library where book_id>Book_ID order by book_id").list();
List Entity_Cls_Lst=Objclass.createQuery(“从图书id所在的图书馆>图书id按图书id排序”).List();
(ii)滚动后,您应该获取最后一个结果数据的Book_ID,并在where条件下传递到查询

  List<Object> Entity_Cls_Lst= Objclass.createQuery("from library where book_id>Book_ID order by book_id").setMaxResults(MAX_RECORDS).list();
List Entity_Cls_Lst=Objclass.createQuery(“从图书id所在的图书馆>图书id按图书id排序”).setMaxResults(MAX_记录).List();

我在hibernate中使用相同的分页。下面给出了HQL。它可能对您有用

(i) 最初您应该使用这个查询

List<Object> Entity_Cls_Lst= Objclass.createQuery("from library where book_id>Book_ID order by book_id").list();
List Entity_Cls_Lst=Objclass.createQuery(“从图书id所在的图书馆>图书id按图书id排序”).List();
(ii)滚动后,您应该获取最后一个结果数据的Book_ID,并在where条件下传递到查询

  List<Object> Entity_Cls_Lst= Objclass.createQuery("from library where book_id>Book_ID order by book_id").setMaxResults(MAX_RECORDS).list();
List Entity_Cls_Lst=Objclass.createQuery(“从图书id所在的图书馆>图书id按图书id排序”).setMaxResults(MAX_记录).List();

很简单:如果您有
where rownum,我认为它不是这样工作的……从我看到的直接在数据库上尝试查询,再次添加orderBy操作符会减少执行时间,因此rownum似乎是在orderBy之后应用的(我假设db试图获取并排序与查询匹配的所有记录,然后排序它们以返回前N个)很简单:如果您有
where rownum,我认为它不是这样工作的……从我看到的直接在数据库上尝试查询,再次添加orderBy操作符会减少执行时间,因此rownum似乎是在orderBy之后应用的(我假设db试图获取并排序与查询匹配的所有记录,然后排序它们以返回前N个)我发现您的解决方案有两个问题,第一个是我不能使用order By运算符,因为它使查询速度非常慢,因此我不能将ID用作筛选器,因为我的记录的ID没有排序。我使用了发布在此处的解决方案,它有时会失败,并给出错误的order By结果,因为它类似于SQL:select*来自(您的查询)rownum我看到关于您的解决方案有几个问题,第一个问题是我不能使用order By运算符,因为它使查询速度非常慢,因此我不能使用ID作为筛选器,因为我的记录的ID没有排序。我使用了发布在这里的解决方案,它有时会失败,并给出错误的order By结果,因为它类似到SQL:从(您的查询)中选择*其中的rownum