アプリケーションのページングに問題があります。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
最初の 2 つの「ページ」だけが正しく機能し、その後は同じ範囲の行が表示される理由がわかりません。
アドバイスがあればthx