如何使用 Criteria Restriction.like、Hibernate 和 Spring 来改变参数?

How can I different parameters using Criteria Restriction.like, Hibernate and Spring?

我想知道如何在不同的列中搜索相同的参数。

当我执行 "criteria.add(Restrictions.like("firstName", search + "%"));"它有效,但仅适用于单个列。

那么,我如何使用标准来使用 "OR"?

    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();

像这样用于析取;

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...)
  • 连词 --> 将表达式组合在一个连词中(A and B and C...)

Restrictions 有一个 or 方法可以接受任意数量的条件,所以你可以这样做:

criteria.add(Restrictions.or(
    Restrictions.like("firstName", search + "%"),
    Restrictions.like("lastName", search + "%"),
    Restrictions.like("mobileNo", search + "%"),
    Restrictions.like("ssn", search + "%"))
);