2009-11-11 24 views
0

我一直在試圖找到一種方法來使用NHibernate標準(首選)或HQL來做這個查詢,沒有運氣。NHibernate中的多表COUNT與加入的子類

下面是該查詢:

select COUNT(sa.Id) from Accounts a 
join Sources s on a.Id = s.Account_Id 
join SpecialArticles sa on sa.SpecialSource_Id = s.Id 

注:

  1. SpecialSource是源的子類,被映射爲一個JoinedSubClass
  2. SpecialArticle是文章的子類,被映射爲一個JoinedSubClass

這裏是類模型psudo-code:

class Account 
{ 
    Guid _id; 
} 

class Source 
{ 
    Guid _id; 
    Account _account; 
} 

class Article 
{ 
    Guid _id; 
    Source _source; 
} 

class SpecialSource : Source 
{ 
    Guid _id; 
    // ... subclass specific fields 
} 

class SpecialArticle : Article 
{ 
    Guid _id; 
    // ... subclass specific fields 
} 

而目的基本上是要計算一個帳戶的特殊文章數。

任何幫助表示讚賞!

+0

你能提供你的對象模型? – 2009-11-11 11:14:56

回答

1

如果目的是計算SpecialArticles數量對於一個給定Account您可以嘗試此查詢:

int count = session 
    .CreateCriteria<SpecialArticle>() 
    .CreateAlias("Source", "source") 
    .CreateAlias("source.Account", "account") 
    .Add(Expression.Eq("account.Id", accountId)) 
    .SetProjection(Projections.Count(Projections.Id())) 
    .UniqueResult<int>();