1

サーバーには次のクエリがあります。

Query query = this.entityManager.createQuery(
           "SELECT type, id, date, amount FROM Transaction ORDER BY type ASC");

タイプ フィールドが一意ではありません。

ページネーションを実装するために、次のコードを使用します。

query.setFirstResult(currentPage * pageSize).setMaxResults(pageSize);

つまり、ページ サイズが 10 で、全体で 15 の結果がある場合、クライアントcurrentPage = 0, pageSize = 10は最初のページを表示するために送信しcurrentPage = 1, pageSize = 10、2 番目のページを表示するために送信します。

合計結果 > ページ サイズの場合、異なるページで同じ結果が得られ、一部の結果行が (どのページでも) まったく表示されないようです。この問題は、次のクエリを使用すると発生しないため、並べ替えフィールドが一意ではないという事実に関係していると推測されます。

"SELECT type, id, date, amount FROM Transaction ORDER BY type ASC, id ASC"

なぜこれが起こるのか誰か知っていますか?そして、それを解決する方法は?(その他、idをソートフィールドとして追加するだけです)。

4

0 に答える 0