Использование CreateCriteria и выбор строки на основе максимального значения - PullRequest
0 голосов
/ 12 ноября 2009

Я хочу выбрать строку из одной таблицы в базе данных, используя CreateCriteria, где у меня есть известное значение для столбца, а не первичный ключ, поэтому будет соответствовать несколько строк. Таблица содержит информацию об обновлении, поэтому у нас есть столбец, содержащий номер версии для каждой строки, на основе которого, наряду с моим основным вопросом, приводится одна уникальная строка.

Я пробовал что-то в следующих направлениях, что работает, но кажется, что я должен быть в состоянии использовать что-то лучше. Было бы здорово, если бы было какое-то Restriction.Max ("Avtal")

var result = Session.CreateCriteria(typeof(Avtal))
.Add(Restrictions.Eq("Avtal", avtal))
.Add(Restrictions.Eq("Versionsnummer", 
Session.CreateCriteria((typeof(Avtal)))
.Add(Restrictions.Eq("Avtal", avtal))
.SetProjection(Projections.Max("version"))
.UniqueResult<int>()))
.List<Avtal>();

Любой указатель в правильном направлении будет очень полезен, и НЕТ, я не хочу использовать CreateQuery, писать HQL напрямую или что-то подобное, мы используем Critierias и хотим придерживаться этого.

Спасибо

1 Ответ

0 голосов
/ 29 июня 2010

Я наткнулся на ваш вопрос, когда искал то же самое, а потом наткнулся на это:

var result = Session.CreateCriteria(typeof(Avtal)) .Add(Order.Desc("Versionsnummer")) // sort it and take the first one .UniqueResult())) .List();

...