2

クエリのキャッシュと ORDER BY 句を使用した NHibernate のバグと呼ばれるものを見ています...

次のクエリを実行すると...

SELECT this_.Id          as y0_,
       this_.Name        as y1_
FROM   Products this_
WHERE  this_.IsActive = 1
ORDER BY this_.IsPremium desc

... NHibernate は、クエリ キャッシュをオンにして、このクエリをキャッシュするように指示すると (eg を使用して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

誰かが理由を説明したり、この「機能」に関する詳細なドキュメントを教えてくれませんか? または、さらに良いことに、誰かが問題の解決策を持っていますか?

4

1 に答える 1