Question

I am using JPA's(Entity Manager) Criteria query to fetch results from database. I need to put 'OR' clause between the criterias.

My code is as below:

List<Predicate> criteraList = new ArrayList<Predicate>();
if(user.getEid() != null){
    criteraList.add(criteriaUserCountry.like((Expression) userList.get("userCountryPK").get("user").get("eid"), "%" + user.getEid() + "%" ));
}
if(user.getFirstName() != null) {
    criteraList.add(criteriaUserCountry.like((Expression) userList.get("userCountryPK").get("user").get("firstName"), "%" + user.getFirstName() + "%" ));
}
cq.where(criteraList.toArray(new Predicate[]{}));
TypedQuery<UserCountry> query = entityManager.createQuery(cq);

In terms of sql query, the above code inserts 'AND' between different criterias. How can an 'OR' clause be achieved using Entity Manager's criteria.

Was it helpful?

Solution

Use the OR predicate

Note that since it has an overload with varargs, you can pass a Predicate[] to it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top