Можно ли искать одно и то же значение в нескольких столбцах с помощью критерия гибернации? - PullRequest
3 голосов
/ 26 июля 2010

У меня есть поисковый запрос, который имеет много дополнительных параметров, а затем поле поиска слова, которое ищет много столбцов. Можно ли использовать для этой цели критерии гибернации? Мне нужно найти много столбцов с одним и тем же поисковым словом.

Пример кода (что не работает правильно)

if(isNotEmpty(searchWord))
{
    criteria.add(Restrictions.like("description", searchWord));
    criteria.add(Restrictions.like("name", searchWord));
}

Ответы [ 3 ]

4 голосов
/ 27 июля 2010

Похоже, вам действительно нужно ИЛИ:

Criterion description = Restrictions.like("description", searchWord);
Criterion name = Restrictions.like("name", searchWord);
LogicalExpression orExp = Restrictions.or(description, name);
criteria.add(orExp);
2 голосов
/ 28 января 2014

с помощью Disjunction мы добавили любое количество столбцов и, наконец, добавили obj Disjunction к критериям.

Disjunction disCriteria = Restrictions.disjunction();
disCriteria.add(Restrictions.eq("name", searchWord));
disCriteria.add(Restrictions.eq("description", searchWord));
criteria.add(disCriteria);
1 голос
/ 28 июля 2010

Я решил это с помощью пользовательских ограничений SQL, пример здесь:

Object[] values = {  }; // values here
Type[] types = {  }; // value types here
criteria.add(Restrictions.sqlRestriction("sql query here", values, types));
...