Ограничения HibernateEntityQuery и EJBQL - PullRequest
0 голосов
/ 26 сентября 2011

Я только что унаследовал некоторый код, который использует ограничения HibernateEntityQuery и EJBQL.

Существует таблица / сущность "активность" с различными полями, и существующие ограничения EJBQL выглядят следующим образом:

private final String[] SEARCHRESTRRICTION = { 
    "activity.startDate >= #{activityList.startMonthBeginDate}",
    "activity.startDate <= #{activityList.startMonthEndDate}",
    "activity.cost >= #{activityList.minCost}"
}

В таблице также есть семь логических полей, представляющих дни (солнце / понедельник / вторник ...), которые применяются для данного вида деятельности. Теперь я хотел бы сделать запрос по дням - пользователь выберет дни, которые ему интересны, и отфильтрованные результаты должны включать действия, которые соответствуют любым дням, выбранным пользователем.

Например, если пользователь проверяет mon / wed / fri, запрос должен возвращать все действия, для которых mon = true ИЛИ wed = true ИЛИ fri = true.

Проблема с EJBQL заключается в том, что он применяет ограничения, используя AND, тогда как мне нужно сделать что-то вроде:

select * from activity where
      (mon = true OR wed = true OR fri = true);

Есть ли способ указать ограничение в виде «вернуть результат, если ЛЮБОЕ из следующего верно»?

1 Ответ

0 голосов
/ 24 октября 2011

Решением было перенести начальную фильтрацию на вызов setEjbql(), который применяется до setRestrictionExpressionStrings().

...