CriteriaQuery<Hotel> cquery = builder.createQuery(Hotel.class);
Root<Hotel> hotel = cquery.from(Hotel.class);
// QUESTION can like create the pattern for us?
cquery.select(hotel).where(
builder.or(builder.like(builder.lower(hotel.get(Hotel_.name)), criteria.getSearchPattern()),
builder.like(builder.lower(hotel.get(Hotel_.city)), criteria.getSearchPattern()),
builder.like(builder.lower(hotel.get(Hotel_.zip)), criteria.getSearchPattern()),
builder.like(builder.lower(hotel.get(Hotel_.address)), criteria.getSearchPattern())));
List<Hotel> results = em.createQuery(cquery).setMaxResults(criteria.getFetchSize())
.setFirstResult(criteria.getFetchOffset()).getResultList();