gpt4 book ai didi

java - setFirstResult 和 setMaxResults 没有按预期工作

转载 作者:行者123 更新时间:2023-11-29 05:48:11 24 4
gpt4 key购买 nike

我的应用程序中有分页问题。我想使用 setFirstResult 和 setMaxResults 方法,但它给了我错误的输出:

(我的数据库:SQLite)

例子:

    Session session = HibernateUtil.getSessionFactory().openSession();

int page = 0;
int maxRows = 20;

while (page < 5) {

Criteria criteria = session.createCriteria(Book.class);
criteria.setFirstResult(page * maxRows).setMaxResults(maxRows);
criteria.addOrder(Order.asc("id"));
List<Book> list = criteria.list();

System.out.println("FirstRow: " + page * maxRows + " - RowsLimit: " + maxRows);
for (Book b : list) {
System.out.println(b.getId());
}
page++;
}
session.close();

输出给了我:

FirstRow: 0 - RowsLimit: 20
1
.
.
.
20
FirstRow: 20 - RowsLimit: 20
21
.
.
.
40
FirstRow: 40 - RowsLimit: 20
21
.
.
.
40
FirstRow: 60 - RowsLimit: 20
21
.
.
.
40

我不知道为什么只有前两个“页面”可以正常工作,而在它们之后却给了我相同范围的行。

感谢任何建议

最佳答案

好的,这是解决方案。

http://shagy0101.blogspot.cz/2012/03/sqlite-jpa-hibernate-pagination.html

问题出在 SQLite 方言中。只需将此方法添加到您的 SQLiteDialect 中:

 @Override
public boolean bindLimitParametersInReverseOrder(){
return true;
}

关于java - setFirstResult 和 setMaxResults 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com