2011-09-03 49 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沒有對位運算的支持。