2011-02-07 73 views
0

我需要NHibernate的標準,像這樣寫:&和|在NHibernate的標準運營商

SELECT something FROM sometable 
WHERE (something & 1) = 1 

其中「東西」爲int。

我不知道怎麼寫與標準的WHERE部分:

ICriteria _Criteria = CreateCriteria(); 
_Criteria.Add(NHibernate.Criterion.Restrictions.Eq("something", ???); 

這是可能的NHibernate的?如果不是,如果我需要在WHERE部分中使用值,則存在任何替代解決方案?

回答

1

我不知道標準查詢是否明確支持按位運算符,但我沒有在文檔中看到它。

一個選擇是使用HQL。請參閱this SO answer,這表明HQL解析器將通過'&'。我實際上沒有嘗試過。

另一種選擇是,您可以在SQL中定義一個函數來執行按位工作,然後在查詢中使用它。這個blog post涵蓋了使用NH的原生SQL函數。你可以做一個像(沒有測試過)的功能:

CREATE FUNCTION dbo.BitwiseAnd (@something integer, @andedwith integer) RETURNS bit as 
     return select @something & @andedwith