2010-06-17 47 views
3

一位同事最近遇到了一個問題,他將單個日期參數傳遞給一個命名查詢。在查詢中,參數被使用了兩次,一次在表達式中,一次在GROUP BY子句中使用。令我們驚訝的是,我們發現NHibernate使用了兩個變量,並且以@ p1和@ p2兩次發送了單個命名參數。這種行爲導致SQL失敗查詢,通常的「select子句中的列不在group by子句中」(我解釋爲「ofcourse」)。NHibernate命名查詢參數編號@ p1 @ p2等

這種行爲是否正常?它可以改變嗎?在我看來,如果你有一個參數名稱:startDate,NHibernate只需要在@ p1中傳遞,無論你可以引用多少次:查詢中的startDate。

有何評論?

該問題是通過使用另一個子查詢來解決SQL解析錯誤。

回答

0

例如,如果您使用的數據庫不支持命名參數,在這種情況下NHibernate使用位置數據,並且它會複製該值。