SetFirstResult と SetMaxResults を使用するときに、ResultTransformer を使用せずに個別の結果セットを取得する方法をご存知ですか?

StackOverflow https://stackoverflow.com/questions/545940

質問

SetFirstResult と SetMaxResult を使用し、クエリが結合している場合、結果は一意ではなく重複した結果になります。

次に、基準 API にすべての種類の Distinct ヘルパーを使用します。ただし、結果セット全体をフィルタリングするのではなく、ページングされた結果をフィルタリングするだけです。

どうすればこの問題を克服できますか?

ありがとう

他のヒント

私も同様のソリューションを構築しましたが、DB への 1 回のアクセスだけで済みました。

DetachedCriteria subQuery = ...//-->「SetFirstResult」と「SetMaxResults」を含む必要なすべての基準を追加します

DetachedCriteria rootQuery = DetachedCriteria.For();// ここで、T はエンティティです

subQuery.SetProjection( projections.distinct(projections.projectionList()。add(projections.alias(projections.property( "id")、 "id"))))) );

// 注記:私のすべてのエンティティは、プロパティ「ID」rootquery.Add(subqueries.propertyin( "id"、subquery))を含む基本クラスから継承します。

// ...rootQuery を使用して T のリストを取得すると、繰り返し項目は取得されません。

誰かがこの実装が役立つことを願っています:)

ローマ語

scroll top