結合と行ベースの制限(ページング)を使用して、hibernateで明確な結果を得るにはどうすればよいですか?
2023-10-23 03:11:45
質問
行ベースの制限を使用してページングを実装しようとしています(例えば。
setFirstResult(5)
と
setMaxResults(10)
) を他のテーブルへの結合を持つ Hibernate Criteria クエリ上で使用することができます。
当然ながら、データはランダムに切断されます。その理由を説明します。 ここで .
解決策として、このページでは、結合の代わりに "2番目のSQL select" を使用することを提案しています。
既存の基準クエリ (このクエリには
createAlias()
を使用した結合があります) を、代わりにネストされた select を使用するように変換するにはどうすればよいですか?
どのように解決するのですか?
個別のハイドレイトされたオブジェクトのリストではなく、個別のIDのリストを要求することによって望ましい結果を達成することができます。
単にこれを基準に追加してください。
criteria.setProjection(Projections.distinct(Projections.property("id")));
これで、行ベースの制限にしたがって正しい数の結果が得られるようになります。これがうまくいくのは、プロジェクションが明瞭性チェックを行うからです。 の一部として行うからです。 の一部として行うからです。ResultTransformerが行うのは、結果を区別するためにフィルタリングすることではなく の後に を実行することです。
注目すべきは、オブジェクトのリストを取得する代わりに、idのリストを取得するようになったことです。
関連
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
API の戻り値を処理するために ResponseEntity を使用する
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
Hibernateの基準。マッピングされた関連付けのないテーブルの結合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
無効なメソッド宣言
-
ジャバアレイ
-
FindBugの使用概要
-
eclipse にリソースリーク:'in' が閉じない
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
Java の double データ型における 0.0 と -0.0 の問題
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ