代码之家  ›  专栏  ›  技术社区  ›  Mukil Deepthi

NHibernate在child中按parentId分组,并从父表中获取此parentId的值

  •  0
  • Mukil Deepthi  · 技术社区  · 8 年前

    我在Header和Detail之间有一对多,如下类所示

    public class Header
    {
        public virtual string ScriptNumber { get; set; }
        public virtual IList<Detail> Details { get; set; }
        public virtual string StartTime { get; set; }
    }
    
    public class Detail
    {
        public virtual string ScriptNumber { get; set; }
        public virtual DateTime UpdatedDate { get; set; }
        public virtual Header ProgramHeader { get; set; }   
    }
    

    我正在尝试查询Detail以按ScriptNumber分组,并从Header表中获取相应的StartTime。谁能帮我怎么做吗。 目前我的NHibernate查询是:

    var changesInDetail = _session.QueryOver<Detail>()
                            .Where(x => x.UpdatedDate.IsBetween(changedFrom).And(changedTo))
                            .SelectList(list => list.SelectGroup(pr => pr.ScriptNumber))
                            .Future<string>();
    
    How to get the StartTime from Header for the grouped by value in Detail?
    

            var changedScriptsInDetail1 = _session.QueryOver<Detail>(() => detailAlias)
                    .JoinQueryOver(d => d.ProgramHeader, () => headerAlias)
                    .Where(() => detailAlias.UpdatedDate.IsBetween(changedFrom).And(changedTo))
                    .SelectList(list => list
                        .SelectGroup(pr => pr.ScriptNumber)
                        .SelectGroup(()=>headerAlias.StartTime)
                     )
                     .List<object[]>();
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Mukil Deepthi    8 年前
        var changedScriptsInDetail1 = _session.QueryOver<Detail>(() => detailAlias)
                .JoinQueryOver(d => d.ProgramHeader, () => headerAlias)
                .Where(() => detailAlias.UpdatedDate.IsBetween(changedFrom).And(changedTo))
                .SelectList(list => list
                    .SelectGroup(pr => pr.ScriptNumber)
                    .SelectGroup(()=>headerAlias.StartTime)
                 )
                 .List<object[]>();