我在类型为Long的msql表列中,此列表示位falgs。
我需要选择设置了所有几个标志的对象: columnValue& flags = 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和u.myValueFlags&面具 := mask],第1行,第103列:意外令牌[mask]。内部 例外:NoViableAltException(78!= [652:1: simpleConditionalExpressionRemainder [Object left]返回[Object node] :( n = comparisonExpression [left] |(n1 = NOT)?n = conditionWithNotExpression [(n1!= null),left] | IS(n2 = NOT)? N = isExpression [(n2!= null),left]);]) 在org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1328) 在com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery(EntityManagerWrapper.java:425)
答案 0 :(得分:3)
由于JPQL不支持按位操作,因此无法完成。