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

nhibernate中创建标准的问题

  •  0
  • satish  · 技术社区  · 16 年前

    public class ClaimDetail
    {
       public virtual int Id { get; set; }
       public virtual Claim Claim {get;set;}
       public virtual string ServiceDateFrom { get; set; }      
       public virtual string DateCreated { get; set; }
       public virtual ClaimDetail ParentClaimDetail { get; set; }
    }
    

    SELECT cd.ClaimDetailId ,
    cd.ParentClaimDetail_id  ,
    cds.ClaimDetailId  ,
    cds.ParentClaimDetail_id  ,
    cds.DateCreated,
    cd.DateCreated
     FROM ClaimDetail AS cd left JOIN ClaimDetail AS cds ON 
    cd.ClaimDetailId = cds.ParentClaimDetail_id
    

    我在nhibernate中实现了这个查询

    ICriteria query = session.CreateCriteria(typeof(ClaimDetail), "cd") 
        .CreateAlias("ParentClaimDetail", "cds", NHibernate.SqlCommand.JoinType.LeftOuterJoin);
    query.SetProjection
                  (
                         Projections.ProjectionList()
                           .Add(Projections.Property("cd.ParentClaimDetail.Id"), "sks")
                           .Add(Projections.Property("cd.Id"),"cdid")
                           .Add(Projections.Property("cds.DateCreated"), "dc1")
                           .Add(Projections.Property("cd.DateCreated"), "dc2")
                           .Add(Projections.Property("cds.ParentClaimDetail.Id"), "cds")
                           .Add(Projections.Property("cds.Id"),"cdsid")
                  );
    

    SELECT cd.ClaimDetailId ,
    cd.ParentClaimDetail_id  ,
    cds.ClaimDetailId  ,
    cds.ParentClaimDetail_id  ,
    cds.DateCreated,
    cd.DateCreated
     FROM ClaimDetail AS cd left JOIN ClaimDetail AS cds ON 
    cd.ParentClaimDetail_id = cds.ClaimDetailId
    

    1 回复  |  直到 16 年前
        1
  •  0
  •   monksy    16 年前

    看起来您想使用命名查询。命名查询包含在映射XML中,您可以向其中输入。此外,您可以选择一个自定义类来表示结果数据的实体。