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; }
}

我正在通过标准 api 为所有具有某个名称的部门的人查询数据库,该名称应该与类似模式匹配。

碰巧一个人包含两个或多个部门,其名称包含查询使用的相同字符序列。因此,同一个人被多次返回。为了抑制这一点,我知道我可以使用criteria.SetResultTransformer(Transformers.DistinctRootEntity);,但这只有在结果没有被分页时才有效。

当我对结果进行分页时,我不仅需要获取第一页,还需要知道总共有多少实体。不幸的是,结果转换器在调用时不起作用,criteria.SetProjection(Projections.RowCount())因为没有要转换的结果。

我能否以某种方式避免使用结果转换器检索整个人员列表,然后手动从集合中取出正确的部分?

最好的问候
奥利弗·哈纳皮

4

1 回答 1

1

您需要在您的 sql 请求中包含 distinct 。您可以在此处找到一些信息。第二个答案主要是

于 2009-10-21T10:42:22.637 回答