2011-09-03 45 views
2

我在我的msql表中Long类型的列中,此列表示位falgs。JPQL查询位标志

我需要选择所有的几个标志设置对象: columnValue &标志= columnValue

我尝试:

javax.persistence.Query q = getEntityManager().createQuery("SELECT u FROM Userattributes u WHERE u.myValueFlags & mask := mask"); 
q.setParameter("mask", mask); 

但我有一个语法错误:

导致:java.lang.IllegalArgumentException:在EntityManager中创建查询时发生异常 :异常说明: 解析查询的语法错误[SELECT u FROM Userattributes u WHERE u.userattributesPK.attributeID =:attributeId and u.myValueFlags & mask := mask],line 1,column 103:unexpected token [mask]。内部 异常:NoViableAltException(78!= [652:1: simpleConditionalExpressionRemainder [Object left]返回[Object node] :(n = compareExpression [left] |(n1 = NOT)?n = conditionWithNotExpression [(n1!= null),left] | IS(n2 = NOT)?n = isExpression [(n2!= null),left]);]) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java :1328) 在com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery(EntityManagerWrapper.java:425)

回答

3

不能这样做,因为JPQL没有对位运算的支持。