代码之家  ›  专栏  ›  技术社区  ›  Jay

NHibernate:如何映射聚合

  •  0
  • Jay  · 技术社区  · 17 年前

    下午好,我想学脚气,但不太清楚。

    我需要得到一个SQL查询的结果:

    select patient.name,
           discipline.description,
           sum(patient.enddate - patient.startdate) as totaltime
    from treatment
     join patient on patient.id = treatment.patientId
     join discipline.id = treatment.disciplineId
    

    我不需要持久化结果,只需要显示它。

    • 如果我直接使用hql:

    它将实例化哪些对象并返回给我?它会动态地构建一个包含与结果集中的列相同的字段的对象列表吗?这些文件遗漏了这些信息。

    • 如果我需要做一个映射:

    您是创建到“meta”对象的映射,还是到一个已联接的表(比如“treatment”)的映射?

    谢谢

    1 回复  |  直到 17 年前
        1
  •  0
  •   Jay    17 年前

    这可以通过使用DTO对象(“数据传输对象”)来实现。创建一个只包含希望返回的数据的对象。添加一个初始化构造函数。那么你的HQL可以是这样的形式:

    从x join x.y中选择new mydto(x.value,y.value);

    不过,它似乎不喜欢在对象构造函数中使用聚合函数。

    推荐文章