Начиная с NH v2, HQL поддерживает операторы удаления и обновления через IQuery.ExecuteUpdate()
.Вы также можете поэкспериментировать, используя IQuery.SetMaxResults()
и IQuery.SetFirstResult()
(которые используют ROW_NUMBER()
), чтобы получить желаемый эффект.
РЕДАКТИРОВАТЬ: я экспериментировал сам, SetMaxResults и SetFirstResult игнорируются при генерации sql для ExecuteUpdate() так что это не будет работать.
Также @ в приведенном ниже комментарии HQL ExecuteUpdate (и, по крайней мере, для DELETE) не обязательно означает загрузку состояния объекта в памяти.