Как я могу изменить параметры, используя Criteria Restriction.like, Hibernate и Spring? - PullRequest
0 голосов
/ 13 февраля 2019

Я хотел бы знать, как искать один и тот же параметр в разных столбцах.

Когда я делаю "crit.add (Restrictions.like (" firstName ", search +"% "));"это работает, но только для одного столбца.

Итак, как я могу использовать «ИЛИ», используя критерии?

    Criteria criteria = createEntityCriteria();

    if (search != null && !search.equals("")) {
        criteria.add(Restrictions.like("firstName || lastName || mobileNo || ssn", search + "%"));
        System.out.println("search " + search);
    }

    return (List<Employee>) criteria.list();

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Ограничения имеют метод or, который принимает любое количество критериев, поэтому вы можете сделать:

criteria.add(Restrictions.or(
    Restrictions.like("firstName", search + "%"),
    Restrictions.like("lastName", search + "%"),
    Restrictions.like("mobileNo", search + "%"),
    Restrictions.like("ssn", search + "%"))
);
0 голосов
/ 13 февраля 2019

Используйте как это для дизъюнкции;

criteria.add(Restrictions.disjunction()
      .add(Restrictions.like("firstName", search + "%"))
      .add(Restrictions.like("lastName", search + "%")) 
      .add(Restrictions.like("mobileNo", search + "%")) 
      .add(Restrictions.like("ssn", search + "%")));
  • дизъюнкция -> Объедините выражения в одну дизъюнкцию (A или B или C ...)
  • Conjuction -> Группировать выражения в одно соединение (A и B и C ...)
...