当前位置: 代码迷 >> java >> 如何使用Criteria Restriction.like,Hibernate和Spring设置不同的参数?
  详细解决方案

如何使用Criteria Restriction.like,Hibernate和Spring设置不同的参数?

热度:12   发布时间:2023-07-31 11:16:47.0

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

当我执行“ criteria.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();

这样用于析取;

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和B与C ...)

限制有一个or方法可以接受任意数量的条件,因此您可以执行以下操作:

criteria.add(Restrictions.or(
    Restrictions.like("firstName", search + "%"),
    Restrictions.like("lastName", search + "%"),
    Restrictions.like("mobileNo", search + "%"),
    Restrictions.like("ssn", search + "%"))
);
  相关解决方案