java - JPA 标准检索项目和计数

标签 java jpa jpa-2.0

我需要使用 JPA Criteria API 以以下格式返回数据摘要

“不同值”-> 不同值计数

    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();

关于java - JPA 标准检索项目和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257763/

相关文章:

java - 将时间戳转换为 UTC 时区

java - 在小程序中添加组件

java - map 的 JPA map

java - 这是一个足够好的抽象还是我可以做得更好?

java - 使用 Java JPA (EclipseLink) MySQL 不时删除表的所有内容

java - JetS3t更新内容\mime类型

java - android通知适用于循环中的一个对象

java - 在单个表上映射两个类

java - JPQL TREAT AS/LEFT OUTER JOIN 处理

java - 如何从属性文件中将参数添加为 JPQL 中的 INTERVAL 值?