2017-04-19 6 views
3

タイトルが示すように、最大​​1000個の行しか検索しませんが、クエリ結果が1001の場合は何らかの方法で知りたいと思います。私は2番目のクエリで結果の行の量をチェックする例を見てきましたが、私は1000行を取得するために使用するクエリでそれを持っていたいと思います。私はデータベースから私の結果を受け取るために休止状態と基準を使用しています。データベースはMS SQL結果のHibernate制限の量がより多くを確認する

答えて

2

一般的な方法では不可能です。ページネーションのための

2通常のパターンは以下のとおりです。

  1. 使用2つのクエリ:数える最初の1、あなたは1件の結果をフェッチ一つだけのクエリ、結果
  2. 使用のページを取得し、次のいずれかページに表示するもの以上

ページの総数を表示してユーザーが直接必要なページにジャンプすることができるため、最初のパターンでページ機能が向上しますが、この可能性を加算の代償としてSQLクエリ。

もう1つのデータページがあるかどうかをユーザーに伝えることができます。ユーザーは次のページ(またはすでに見たページ)にジャンプすることができます。

+0

あなたの答えに感謝します。私はどのソリューションがより適しているか考える必要がありますが、良い答えを与えました – XtremeBaumer

1

は、次の2つの異なるクエリから得られる二つの情報が欲しい:からから

  • 選択(回数)...

  • 選択COL1、COL2を、...

実行された単一のCriteriaまたはJPQLクエリでは実行できません。
しかし、使用するDBMSに応じて異なる方法でネイティブSQLクエリ(サブクエリを使って)を行うことができます。

これを行うと、コードが複雑になり、特定のDBMSに依存しやすくなり、パフォーマンス面で何かを得られなくなる可能性があります。
私はあなたが行を取得するためにカウントと2番目のクエリを使用する必要がありますと思う。

そして、後で結果を取得するためにカウントの結果を利用したいなら、Hibernateが提供するページネーションメカニズムをカスタム方法で使用するのを好むべきです。

+0

私は休止状態を使用したいので、あなたの答えをありがとう、ネイティブクエリisntは私に適していません。とにかく良い答え – XtremeBaumer

+0

あなたは大歓迎です。実際には、Hibernateでネイティブクエリを使用することもできます。しかし、ORMを使用することに決めたかのように、それを使用する前に2度考える必要があります。ネイティブSQLは、例外的かつ正当なケースでなければなりません。 – davidxxx

関連する問題