【问题标题】:What is "bw_and" in hibernate query什么是休眠查询中的“bw_and”
【发布时间】:2017-05-16 08:04:42
【问题描述】:

我发现在我的项目中实现了一个奇怪的查询,当我在调用 getResultList() 方法之前调试和检查persistance.query 对象时,我发现的queryString 是:

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

此查询工作正常,并从 setupFiltersIn = :setupFiltersIn 的权限表中获取所有数据。

我还不能理解这个查询语法中的 bw_and 是什么。 有人有什么想法吗?

我用的是sqlServer2014,直接用bw_and查询是sqlServer不接受的。

【问题讨论】:

  • 这是一个Bitwise operation 按位与语法。
  • 啊,对。在我的应用程序中,sqlServerDilact 被覆盖,并且 bw_and 被注册为按位运算符。这就是为什么这特定于我的应用程序。谢谢@chsdk

标签: sql hibernate hql


【解决方案1】:

在我的应用程序中,使用下面的类将 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"));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多