Multi Table COUNT в NHibernate с объединенными подклассами - PullRequest
0 голосов
/ 11 ноября 2009

Я пытался найти способ выполнить этот запрос, используя критерии NHibernate (предпочтительно) или HQL, но безуспешно.

Вот запрос:

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 является подклассом Source и отображается как JoinedSubClass
  2. SpecialArticle является подклассом Article и отображается как JoinedSubClass

Вот псевдокод модели класса:

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
}

И цель в основном состоит в том, чтобы посчитать количество SpecialArticles для учетной записи.

Любая помощь приветствуется!

1 Ответ

1 голос
/ 11 ноября 2009

Если целью является подсчет числа 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>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...