Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HibernateEntityQuery中的位函数_Java_Mysql_Hibernate_Seam - Fatal编程技术网

Java HibernateEntityQuery中的位函数

Java HibernateEntityQuery中的位函数,java,mysql,hibernate,seam,Java,Mysql,Hibernate,Seam,是否可以使用Seam的HibernateEntityQuery在查询中使用位函数? 我刚刚继承了一些基于JSF、Seam和Hibernate的代码。现有的DAO代码利用了Seam的HibernateEntityQuery,特别是它对限制表达式字符串的支持 到目前为止,这一切都很好,但现在我的任务是向现有查询添加一个限制,该限制考虑了位字段 Java实体代码通过以下枚举使用整数字段表示一组“天”: public enum WEEKDAY { MONDAY(1), TUESDAY(2),

是否可以使用Seam的HibernateEntityQuery在查询中使用位函数?

我刚刚继承了一些基于JSF、Seam和Hibernate的代码。现有的DAO代码利用了Seam的
HibernateEntityQuery
,特别是它对限制表达式字符串的支持

到目前为止,这一切都很好,但现在我的任务是向现有查询添加一个限制,该限制考虑了位字段

Java实体代码通过以下枚举使用整数字段表示一组“天”:

public enum WEEKDAY {

    MONDAY(1), TUESDAY(2), WEDNESDAY(4), THURSDAY(8), FRIDAY(16), SATURDAY(32), SUNDAY(64) ;

    private int value;

    private WEEKDAY(int value) {
        this.value = value;
    }
}
此枚举中的整数值存储在
int days
字段中的实体中

例如,如果实体包含星期一、星期三和星期五,
days
将设置为
1 | 8 | 16
,这
==25

现在,我想为查询添加一个新的限制,以便(例如)我可以请求天包括星期一或星期六的实体:
1 | 32==33
,因此在SQL中,我将执行以下操作:

select id from entity where (select days & 33) > 0;
HibernateEntityQuery
有这样的语法吗?我尝试添加以下限制:

entity.days & #{myQuery.bitwiseMeetingDays} > 0
这将导致以下错误:

org.hibernate.QueryException: unexpected char: '&'

最后,我重构了表,使其在“天”中有7个布尔字段,而不是一个整数。这也使得命令行查询更容易

不过,知道一种处理位字段查询的方法还是不错的