NHibernate Criteria 查询以选择每种类型的最新项目

发布于 2024-11-09 19:08:20 字数 449 浏览 2 评论 0原文

我需要使用 NHibernate 标准查询查找工作人员提交的最新报告。我确信我需要使用投影,但我不知道如何设置它。

我的域模型的解释:

public class Employee
{
  public int Id {get; set;}
  public string Name {get; set;}
}

public class Report 
{
  public int Id {get; set;}
  public DateTime? Submitted {get; set;}
  public Employee Employee {get; set;}
  // Other report properties omitted
}

如果有 5 名员工,每人都有 7 份报告,则查询应返回 5 份报告,每个员工一份,并且 Submitted 属性不为空,并且是最近的一份报告员工。。

I need to find the most recent report submitted by members of staff, using an NHibernate criteria query. I'm sure that I need to use projections, but I can't work out how to set it up.

A paraphrase of my domain model:

public class Employee
{
  public int Id {get; set;}
  public string Name {get; set;}
}

public class Report 
{
  public int Id {get; set;}
  public DateTime? Submitted {get; set;}
  public Employee Employee {get; set;}
  // Other report properties omitted
}

If there were 5 members of staff, who each have 7 reports, the query should return 5 reports, one per employee, with the Submitted property being not null, and being most recent one for that employee.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

德意的啸 2024-11-16 19:08:20

我对此不太确定,但请检查一下:

var rst = session.CreateCriteria<Report>()
                .SetProjection(Projections.GroupProperty("Employee"))
                .SetProjection(Projections.Max("Submitted"))
                .Add(NHibernate.Criterion.Expression.IsNotNull("Submitted")).List();

I am not quite sure about this, but check it out:

var rst = session.CreateCriteria<Report>()
                .SetProjection(Projections.GroupProperty("Employee"))
                .SetProjection(Projections.Max("Submitted"))
                .Add(NHibernate.Criterion.Expression.IsNotNull("Submitted")).List();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文