我看到我所說的錯誤NHibernate的與查詢緩存和ORDER BY子句...NHibernate的檢索,即使ORDER BY子句不同
當我運行下面的查詢緩存的查詢結果...
SELECT this_.Id as y0_,
this_.Name as y1_
FROM Products this_
WHERE this_.IsActive = 1
ORDER BY this_.IsPremium desc
... NHibernate的成功緩存它的結果,如果我有查詢緩存打開,我告訴它緩存此查詢(例如,使用criteria.SetCacheable(true)
)。
不幸的是,精彩的NHProf告訴我,NHibernate的運行此查詢時使用緩存的查詢結果也:
SELECT this_.Id as y0_,
this_.Name as y1_
FROM Products this_
WHERE this_.IsActive = 1
ORDER BY this_.IsPremium desc,
this_.Name
任何人能解釋爲什麼或點我到一些深層次的文檔這個「功能」 ?或者,甚至更好,有沒有人有解決方案的問題?
SetCachable用於二級緩存目的。你在使用二級緩存嗎?我的猜測是你只使用一級緩存,由一個身份地圖實現。 – TedOnTheNet