CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<? extends IBean> criteriaQuery = criteriaBuilder.createQuery(beanClass);
Root<? extends IBean> beanRoot = criteriaQuery.from(beanClass);
if ((values != null) && !values.isEmpty())
{
Predicate predicate = null;
for (Map.Entry<String,Object> value : values.entrySet())
{
Predicate valuePredicate = ((value.getValue() != null) ? criteriaBuilder.equal(beanRoot.get(value.getKey()), value.getValue()) : criteriaBuilder.isNull(beanRoot.get(value.getKey())));
predicate = ((predicate != null) ? criteriaBuilder.and(predicate, valuePredicate) : valuePredicate);
}
criteriaQuery.where(predicate);
}
if (orderBy != null)