I have list of category. I need a list of category by excluding 2,3 row. Can we achieve through hibernate by using Criteria and Restriction?
I have list of category. I need a list of category by excluding 2,3 row. Can we achieve through hibernate by using Criteria and Restriction?
Your question is somewhat unclear. Assuming "Category" is a root entity and "2,3" are ids (or values of some property of the category") you can exclude them using the following:
Criteria criteria = ...; // obtain criteria from somewhere, like session.createCriteria()
criteria.add(
Restrictions.not(
// replace "id" below with property name, depending on what you're filtering against
Restrictions.in("id", new long[] {2, 3})
)
);
Same can be done with DetachedCriteria.
For the new Criteria since version Hibernate 5.2:
CriteriaBuilder criteriaBuilder = getSession().getCriteriaBuilder();
CriteriaQuery<Comment> criteriaQuery = criteriaBuilder.createQuery(Comment.class);
List<Long> ids = new ArrayList<>();
ids.add(2L);
ids.add(3L);
Root<Comment> root = getRoot(criteriaQuery);
Path<Object> fieldId = root.get("id");
Predicate in = fieldId.in(ids);
Predicate predicate = criteriaBuilder.not(in);
criteriaQuery
.select(root)
.where(predicate);
List<Comment> list = getSession()
.createQuery(criteriaQuery)
.getResultList();