В моем столбце таблицы msql типа Long этот столбец представляет битовые ошибки.
Мне нужно выбрать объекты, для которых установлены все несколько флагов: 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: Описание исключения: Синтаксическая ошибка при синтаксическом анализе запроса [ВЫБРАТЬ u ИЗ ИСПОЛЬЗОВАННЫХ ИСПОЛЬЗОВАНИЙ u ГДЕ u.userattributesPK.attributeID =: attributeId и u.myValueFlags & mask: = mask], строка 1, столбец 103: неожиданный токен [mask].Внутреннее исключение: NoViableAltException (78! = [652: 1: simpleConditionalExpressionRemainder [Объект слева] возвращает [Узел объекта]: (n = выражение сравнения [слева] | (n1 = НЕ)? N = условиеWithNotExpression [(n1! = Ноль), слева)] | IS (n2 = NOT)? N = isExpression [(n2! = Null), слева]);]) в org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery (EntityManagerImpl.java:1328) в com.sun.enterprise.container.common.impl.EntityManagerWrapper.createQuery (EntityManagerWrapper.java:425)