Java HibernateEntityQuery中的位函数
是否可以使用Seam的HibernateEntityQuery在查询中使用位函数? 我刚刚继承了一些基于JSF、Seam和Hibernate的代码。现有的DAO代码利用了Seam的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),
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个布尔字段,而不是一个整数。这也使得命令行查询更容易 不过,知道一种处理位字段查询的方法还是不错的