サーバーには次のクエリがあります。
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をソートフィールドとして追加するだけです)。