Максимальная дата в HQL-запросе nHibernate - PullRequest
1 голос
/ 30 ноября 2011

У меня возникли некоторые затруднения с написанием hql-запроса, который будет искать в таблице все строки, в которых встречаются определенные критерии, но я хочу только вернуть строку с максимальной датой.

Например, предложение whereзапроса будет что-то вроде:

column1 = input1 и column2 = input2 и date_column

Это может вернуть несколько строк с разными датами, но меня интересует только одна с последнейДата.Мне также нужно, чтобы он возвращал всю строку.

В настоящее время я выполняю запрос с указанным выше критерием по убыванию по дате и затем извлекаю первый элемент в C #.Я хотел бы иметь hql-запрос или решение iCriteria, которое может сделать это за один шаг, если это возможно.

1 Ответ

4 голосов
/ 01 декабря 2011

Вам просто нужно использовать подзапрос. Выберите максимальную дату из соответствующих строк, а затем выберите все записи, которые соответствуют максимальной дате. Мой HQL немного ржавый, но вы поняли.

from TableA a 
where a.Date in (
    select max(b.Date) 
    from TableA b 
    where b.Something="You get the idea"
)

Подзапросы , Агрегатная функция

...