如何使用位运算符的HQL?(How to use bitwise operators in HQL?

2019-06-26 17:21发布

在HQL,我怎样可以使用按位运算符? 我想要得到的SQL查询,看起来像

SELECT RoleId, RoleName, RolePerms WHERE (RolePerms & @Parameter) = @Parameter

然而,写这个的HQL

select from Role where (RolePerms & :param) = :param

给我这个错误:NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:类型Antlr.Runtime.NoViableAltException“引发的异常。

Answer 1:

我找到了解决这个。 写这样的作品的HQL:

select r from Role r where (r.Permissions & :param) > 0


Answer 2:

从第13.8 NHibernate的文档 ,HQL不支持这些位运算符。 你必须要恢复到本地的SQL(见第15条)。



Answer 3:

据NHibernate的吉拉看起来这应该是工作为2.1.0Beta2的https://nhibernate.jira.com/browse/NH-1192 。



文章来源: How to use bitwise operators in HQL?