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

问题描述 投票:2回答:2

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

当我做“criteria.add(Restrictions.like(”firstName“,search +”%“));”它可以工作,但只适用于单个列。

那么,我如何使用Criteria使用“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();
java sql spring hibernate criteria
2个回答
2
投票

像这样用于分离;

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 ......)

2
投票

限制有一个or方法,接受任意数量的Criterions,所以你可以这样做:

criteria.add(Restrictions.or(
    Restrictions.like("firstName", search + "%"),
    Restrictions.like("lastName", search + "%"),
    Restrictions.like("mobileNo", search + "%"),
    Restrictions.like("ssn", search + "%"))
);
© www.soinside.com 2019 - 2024. All rights reserved.