在我的数据库中有以下行
article lang timestamp
0 English 2018-04-07 03:34:49
1 English 2018-04-07 03:34:50
2 English 2018-04-07 03:34:51
3 English 2018-04-07 03:34:52
4 English 2018-04-07 03:34:53
5 English 2018-04-07 03:34:54
6 English 2018-04-07 03:34:55
7 English 2018-04-07 03:34:56
8 English 2018-04-07 03:34:57
9 English 2018-04-07 03:34:58
10 English 2018-04-07 03:34:59
我的查询如下
Query query = session.createQuery("select a from Article a where a.lang=:lang ORDER BY a.timeStamp ASC");
query.setParameter("lang", lang);
query.setFirstResult(startingRow);
query.setMaxResults(endingRow);
List<Article> result = (List<Article>) query.list();
if(result.listIterator().hasNext()) {
return result;
}
当我发送startingRow为0和endingRow为4时,我希望结果为
0
1
2
3
当我发送startingRow为5和endingRow为9时,我希望结果为
4
5
6
7
但它没有像我预期的那样出现。 它以随意的方式返回重复记录。 我在这里做错了什么?
我的要求是,我希望结果(记录)在我正在寻找的序列中。例如,如果我需要记录55到65,那么我需要那些记录。
PS:我尝试使用query.setFetchSize(5),但它一次性返回所有记录。我做了一些研究,发现如果驱动程序不支持setFetchSize(),它将无法正常工作。
答案 0 :(得分:0)
确定。这就是我解决它的方式。
Hibernate让你通过
来解决这个问题query.setFirstResult(startingRow).setMaxResults(5);
其中startingRow
是第x行,并且从该行返回下一个n(此处为5)记录。