Учитывая следующие таблицы:Группировка с графом, используя NHibernate
Ресурсы:
ID ИНТ
Name VARCHAR (100),
Адрес VARCHAR (500),
Город VARCHAR (100) ,
т.д.
ResourceViews:
Id ИНТ
RESOURCEID INT,
идентификатор пользователя INT,
viewDate DateTime
каждый раз, когда ресурс смотрел, добавляется запись в таблицу ResourceView для этого пользователя.
Вот соответствующие классы:
public class Resource
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public IList<ResourceView> ResourceViews { get; set; } // simplified
etc. -- class simplified for question
}
public class ResourceView {
public int Id { get; set; }
public Resource Resource { get; set; }
public User User { get; set; }
public DateTime ViewDate { get; set; }
}
Использование NHibernate, как я могу получить топ-5 самых просматриваемых ресурсов в порядке подсчета аналогично тому, что получает следующий SQL:
выберите * из [ресурс]
, где идентификатор (
выбрать лучшие 5 ResourceId от resourceViews
, где идентификатор пользователя = 3
группы путем (ResourceId)
порядок по количеству (*) по алфавиту
)
бонусных очков, если это может быть сделано с Criteria API вместо HQL.
Это было почти идеально, спасибо !! Полученные очки и я поставил окончательное решение в качестве нового ответа для всех, кто сталкивался с этим вопросом. –