JPA 条件检索项目和计数
JPA Criteria Retrieving Item and Count
我需要使用 JPA 标准 API 以 return 格式的数据摘要
"Distinct Value" -> 不同值的计数
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createQuery(Tuple.class);
Root<User> root = criteriaQuery.from(User.class);
// this is where I want to get a count of the user levels and how many users per level
criteriaQuery.select(criteriaBuilder.tuple(
root.get(User_.userLevel),
// user count?
));
我更喜欢通过条件 API 来执行此操作。
有人可以帮忙吗?
杰森
这应该可以解决问题:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> tupleQuery = cb.createTupleQuery();
Root<User> root = tupleQuery.from( User.class );
tupleQuery
.select( cb.tuple( root.get( User_.userLevel ), cb.distinctCount( root ) ) )
.groupBy( root.get( User_.userLevel ) );
List<Tuple> results = entityManager.createQuery( tupleQuery ).getResultList();
我需要使用 JPA 标准 API 以 return 格式的数据摘要
"Distinct Value" -> 不同值的计数
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createQuery(Tuple.class);
Root<User> root = criteriaQuery.from(User.class);
// this is where I want to get a count of the user levels and how many users per level
criteriaQuery.select(criteriaBuilder.tuple(
root.get(User_.userLevel),
// user count?
));
我更喜欢通过条件 API 来执行此操作。
有人可以帮忙吗?
杰森
这应该可以解决问题:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> tupleQuery = cb.createTupleQuery();
Root<User> root = tupleQuery.from( User.class );
tupleQuery
.select( cb.tuple( root.get( User_.userLevel ), cb.distinctCount( root ) ) )
.groupBy( root.get( User_.userLevel ) );
List<Tuple> results = entityManager.createQuery( tupleQuery ).getResultList();