Search code examples
javasqlspringhibernatecriteria

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


I would like to know how to search the same parameter in different columns.

When I do "criteria.add(Restrictions.like("firstName", search + "%"));" it works, but just for a single column.

So, how can I use "OR" using Criteria?

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

Solution

  • Use like this for disjunction ;

    criteria.add(Restrictions.disjunction()
          .add(Restrictions.like("firstName", search + "%"))
          .add(Restrictions.like("lastName", search + "%")) 
          .add(Restrictions.like("mobileNo", search + "%")) 
          .add(Restrictions.like("ssn", search + "%")));
    
    • Disjunction --> Group expressions together in a single disjunction (A or B or C...)
    • Conjuction --> Group expressions together in a single conjunction (A and B and C...)