Alex Rivera | Logout

hibernate jpa criteriabuilder ignore case queries

Asked 2011-01-08T19:48:08.000
89

How to do a like ignore case query using criteria builder. For description property I want to do something like upper(description) like '%xyz%'

I have the following query

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();

    CriteriaQuery<Person> personCriteriaQuery = criteriaBuilder.createQuery(Person.class);
    Root<Person> personRoot = personCriteriaQuery.from(Person.class);

    personCriteriaQuery.select(personRoot);
    personCriteriaQuery.where(criteriaBuilder.like(personRoot.get(Person_.description), "%"+filter.getDescription().toUpperCase()+"%"));
    List<Person> pageResults = entityManager.createQuery(personCriteriaQuery).getResultList();
jpa
Edit
Report

1 Answer

155

There is a CriteriaBuilder.upper() method:

personCriteriaQuery.where(criteriaBuilder.like(
    criteriaBuilder.upper(personRoot.get(Person_.description)), 
    "%"+filter.getDescription().toUpperCase()+"%"));
answered 2011-01-08T19:58:14.403

Your Answer