При применении пейджинга (с использованием 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 ...
Кто-нибудь знает мою глупую проблему?
select *
в запросе sql? - person dotjoe   schedule 04.02.2010