Я только начал изучать запросы NHibernate Criteria. Теперь займемся этой проблемой таблицы соединения и разбиения.
Справочная информация:
1. две объектные модели:
Проект, Пользователь
2.Свойства модели:
Проект:
- ID (целое)
- UpdateDate (DateTime)
- Статус (строка)
- Пользователь (Пользователь)
Пользователь:
- ID (целое)
- Имя (строка)
3. отношения
Один проект обновляется пользователем за раз, после каждого обновления будет создан новый экземпляр проекта с текущими UpdateDate, Status, User.
Что я хочу делать:
Группируйте проекты по User.ID
Заказ по UpdateDate
Получите первую запись каждой группы из 1 и 2
Убедитесь, что статус этого проекта! = "Удален"
Если 4 пройдено, то поместить этот проект в список результатов.
Проблема:
- В данный момент я ограничен в использовании критериев
Я умею делать простые запросы, например:
ICriteria projectCriteria = Session.CreateCriteria ();
projectCriteria.Add (Restrictions.Not ("Статус", "Удалено"));
projectCriteria.AddOrder (Order.Desc ("UpdateDate"));
но с трудом справляются с разделами и объединениями таблиц с использованием Criteria API.
интересно, может ли мне помочь кто-нибудь, кто знает, как это сделать.
Благодарность!
SQL-запрос, который я пробовал в базе данных:
WITH PartitionProject AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY UserFk ORDER BY UpdateDate DESC) AS RowNumber
FROM Projects
)
SELECT *
FROM PartitionProject
WHERE RowNumber = 1 and (ProjectStatus != 'Deleted')