При применении подкачки (используя SetFirstResult
и SetMaxResults
) к ActiveRecord
SqlQuery
, с nHibernate 2.1.1 GA и ActiveRecord 2.0.1 генерируется следующий sql:
SELECT
TOP 40
FROM
(, ROW_NUMBER() OVER(ORDER BY account.Name, account.State) as __hibernate_sort_row
select account.Name
<rest of query>
) as query
WHERE query.__hibernate_sort_row > 40
ORDER BY query.__hibernate_sort_row
Эта ошибка и, более того, не запускается в sql ... тогда как она должна быть
SELECT TOP 40 *
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY account.Name, account.State) as __hibernate_sort_row
,select account.Name
<rest of query>
) as query
WHERE query.__hibernate_sort_row > 40
ORDER BY query.__hibernate_sort_row
Странные вещи:
- Запрос без подкачки прекрасно работает
- При подкачке страниц страница 1 работает нормально (т. Е. Первый результат = 0, maxresult = 40)
- Точно такой же подход работает для
HqlQuery
, влияет только на SqlQuery
.
Это относится к MS2005Dialect и MS2008Dialect ...
Кто-нибудь знает мою глупую проблему?