0

必要なのは、クラスのリストに「ページネーション」を追加することです。例:

クラスA
  リストB

したがって、Bのリストを特定の値に制限する必要があります

私がやっていることは(基準を使用しており、すべて動的です):

ICriteria 基準 = Session.createCriteria();

ICriteria criteriaParcial = criteria.CreateCriteria("B");

criteriaParcial.SetFirstResult(0).SetMaxResults(10);

基準.リスト();

これは一例です。実際のコードはすべて動的で反復的です。

このメカニズムは、フィルタリング値を見つけるために機能しますが、ページネーションには機能しません。

何か案が?タンク

更新しました!!!

このメソッドの実行criteria.CreateCriteria("B").setMAxResults(10)は、思ったように subCriteria ではなくルート基準に変更されるため、このアプローチは機能しません。

だから私の言い訳は今です。クラス内のリストを制限またはページ付けすることは可能ですか?

このようなもの: 私はアドレスのリストを持つクラス Person を持っているので、Person をロードしたいのですが、アドレスのリスト内の最初の 2 つのオブジェクトだけです。

4

1 に答える 1

0

私の知る限り、それは不可能です。しかし、アプローチはどちらにしても間違っています。ルート エンティティ データをロードし、別のクエリでサブ リストをロードすることをお勧めします。これにより、必要に応じてフィルターと並べ替えをページ付けできます。

リスト プロパティは、見栄えを良くするために作成されたものではありません。オブジェクトのリストとその機能を格納するためだけのものです。そのため、それらのアイテムのみを返す別のクエリを作成することが最善の方法です。

Future<> クエリを使用して、DB のパフォーマンスを向上させることができます。

于 2012-06-29T15:20:41.613 に答える