JPQL запрашивающие битовые флаги - PullRequest
2 голосов
/ 03 сентября 2011

В моем столбце таблицы 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)

1 Ответ

3 голосов
/ 01 июля 2012

Этого нельзя сделать, потому что JPQL не поддерживает побитовые операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...