0

私のエンティティは次のようになります(簡略化):

public class Person
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public IList<Department> Departments { get; set; }
}

public class Department
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

like-patternに一致する特定の名前の部門を持つすべての人の基準APIを介してデータベースにクエリを実行しています。

ある人に、クエリで使用されるのと同じ文字シーケンスが名前に含まれている2つ以上の部門が含まれている場合があります。したがって、同じ人が複数回返されます。これを抑えるために、私は使用できることを知っていますcriteria.SetResultTransformer(Transformers.DistinctRootEntity);が、これは結果がページングされていない場合にのみ機能します。

結果をページングするときは、最初のページを取得するだけでなく、合計でエンティティがいくつあるかを知る必要があります。残念ながら、変換する結果がないため、呼び出し時に結果トランスフォーマーは機能しませんcriteria.SetProjection(Projections.RowCount())

結果トランスフォーマーを使用して人物のリスト全体を取得し、コレクションから適切な部分を手動で削除することをどうにかして回避できますか?

よろしく
オリバーハナッピ

4

1 に答える 1

1

SQLリクエストにdistinctを含める必要があります。ここで見つけることができるいくつかの情報。2番目の答えはほとんど

于 2009-10-21T10:42:22.637 に答える