Можно ли использовать битовые функции в запросах с использованием Seam HibernateEntityQuery?
Я только что унаследовал некоторый код, основанный на JSF, Seam & Hibernate.В существующем коде DAO используется HibernateEntityQuery
Seam, в частности его поддержка строк выражений ограничения.
До сих пор это работало нормально, но теперь передо мной стоит добавить ограничение к существующему запросу, учитывающее битовое поле .
Код сущности Java использует целочисленное поле для представления набора «дней» через это перечисление:
public enum WEEKDAY {
MONDAY(1), TUESDAY(2), WEDNESDAY(4), THURSDAY(8), FRIDAY(16), SATURDAY(32), SUNDAY(64) ;
private int value;
private WEEKDAY(int value) {
this.value = value;
}
}
Целочисленное значение из этого перечисления сохраняется в сущности вint days
поле.
Например, если объект содержит понедельник, среду и пятницу, days
будет установлен на 1 | 8 | 16
, что == 25
.
Теперь я хотел бы добавить новое ограничение к запросу, чтобы (например) я мог запросить сущности, для которых дни включают MONDAY OR SATURDAY: 1 | 32 == 33
, поэтому в SQL я бы сделал:
select id from entity where (select days & 33) > 0;
Существует ли такой синтаксис для HibernateEntityQuery
?Я попытался добавить следующее ограничение:
entity.days & #{myQuery.bitwiseMeetingDays} > 0
, что приводит к следующей ошибке:
org.hibernate.QueryException: unexpected char: '&'