2009-11-02 5 views
0

J'ai un entitiy commeproblème créer des critères dans NHibernate

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

Je veux appliquer jointure externe gauche sur ce tableau que

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 

J'application de la présente requête dans NHibernate comme

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") 
      ); 

mais cela crée un critère créant une requête en tant que

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 

quelqu'un peut m'aider.

Merci à l'avance

Répondre

0

Il semble que vous voulez utiliser une requête à la place du nom. La requête nommée va dans le mapping XML et vous pouvez y introduire des entrées. En outre, vous pouvez sélectionner une classe personnalisée pour représenter les entités des données résultantes.

Questions connexes