2017-05-16 37 views
0

我發現了一個奇怪的查詢在我的項目實施,當我調試和檢查persistance.query對象之前調用它getResultList()方法,我發現查詢字符串是:什麼是「bw_and」在Hibernate查詢

FROM AuthorityTbl a WHERE bw_and(a.setupFiltersIn, :setupFiltersIn) <> 0

該查詢工作正常,並從權限表獲取所有數據,其中setupFiltersIn =:setupFiltersIn。

我無法理解這個查詢語法中的bw_and。 任何人都可以有任何想法嗎?

我正在使用sqlServer2014,並且直接使用bw_and進行查詢,sqlServer無法接受。

+1

這是一個爲[按位操作](https://en.wikipedia.org/wiki/Bitwise_operation)語法**按位AND **。 –

+0

啊,對。 在我的應用程序中,sqlServerDilact被覆蓋,而bw_and被註冊爲按位運算符。這就是爲什麼這是特定於我的應用程序。謝謝@chsdk –

回答

0

在下面類我的應用程序使用哪個寄存器bw_and作爲位運算符

public class ExtendedMSSQLServerDialect extends SQLServerDialect { 

    public ExtendedMSSQLServerDialect() { 
     super(); 
     registerFunction("bw_and", new BitwiseSQLFunction(BitwiseSQLOperator.AND, "bw_and")); 
     registerFunction("bw_or", new BitwiseSQLFunction(BitwiseSQLOperator.OR, "bw_or")); 
     registerFunction("cast_text_to_varchar_of_length", new CastTextToVarcharSQLFunction("cast_text_to_varchar_of_length")); 
    } 
}