Hibernate multiselect with groupBy count Example

As multiple hibernate 5 API’s like createSQLQuery, Query and createCriteria deprecated, I have provided the below snippet which performs the multiselect with groupby count using Hibernate latest API’s.

Table of Contents
Multiselect in hibernate criteriaQuery
criteriaQuery.multiselect(Store.get("storeType"),criteriaBuilder.count(StoreRoot));
groupBy in Hibernate criteriaBuilder
criteriaQuery.groupBy(storeRoot.get("storeType"));
count in Hibernate criteriaBuilder
criteriaBuilder.count(StoreRoot);
Hibernate multiselect with groupBy count – Code Snippet
// if you have different way to get the session, just replace that with this line. Session session = entityManager.getSession(); CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); CriteriaQuery<Object[]> criteriaQuery = criteriaBuilder.createQuery(Object[].class); Root<Store> storeRoot = criteriaQuery.from(Store.class); criteriaQuery.multiselect(Store.get("storeType"),criteriaBuilder.count(StoreRoot)); criteriaQuery.groupBy(storeRoot.get("storeType")); List<Object[]> result = session.createQuery(criteriaQuery).getResultList();