生成用於尋呼無效SQL時施加尋呼(使用SetFirstResult
和SetMaxResults
)到ActiveRecord
SqlQuery
,與NHibernate 2.1.1 GA和ActiveRecord的2.0.1生成以下SQL:活動記錄或NHibernate的上SqlQuery類
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 ...
任何人都知道我的愚蠢的問題?
你在做sql中的'select *'查詢嗎? – dotjoe
沒有。所有領域都被提名。我也別名,它仍然會產生垃圾的SQL。我現在手動添加。不理想。 – penderi
我也有同樣的問題 –