JPA findAll Pageable Request Total Count Group By Column

Posted

技术标签:

【中文标题】JPA findAll Pageable Request Total Count Group By Column【英文标题】: 【发布时间】:2020-03-31 04:26:06 【问题描述】:

我有如下代码:

Pageable pageableRequest = PageRequest.of(page, limit, Sort.by(sortBy));
Page<User> userList= null;
userList = this.user.findAll(pageableRequest)

从这里我得到所有数据并显示总数。但是,我想按状态对总数进行分组。我怎样才能做到这一点?现在总数是 26,我有 3 个状态非活动、活动和 vip。

【问题讨论】:

I want to group the total by status 按计数,数据?你试过写查询吗? 我已经尝试过类似下面的方法,但它只返回 3 个值,但我没有从每个组中获取所有用户 @Query("SELECT u FROM User u GROUP BY status") Page findAll(); 【参考方案1】:

如果您想让所有用户按状态分组,您可以执行以下操作。

询问所有用户,然后在 java 中分组

List<User> userList = this.user.findAll();
Map<Status, List<User>> mapResult = userList.stream()
    .collect(Collectors.groupingBy(User::getStatus));

【讨论】:

我需要以 Page 的身份返回。我怎样才能用上面的方法做到这一点? Page&lt;User&gt; 应该是什么样子。例如:有 25 个用户和 10 个页面大小? @CloudSeph 您可以使用Page&lt;User&gt; 并执行此操作this.user.findAll(pageableRequest).stream() .collect(Collectors.groupingBy(User::getStatus));,但它只映射子列表而不是所有用户@CloudSeph @Iczapski 我不能那样做。我会得到不兼容的类型。 @CloudSeph '不兼容的类型'在哪里?

以上是关于JPA findAll Pageable Request Total Count Group By Column的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot - Jpa Distinct 和 Pageable

springboot+jpa分页插件(Pageable+Page)

如何记录Spring Boot JPA Pageable绑定值?

JPA Pageable 无法分页问题

如何通过 Sort 和 Pageable 使用 Spring data JPA 开箱即用地查询数据?

如何使用带有 Pageable 的 Spring Data JPA 分页来更改数据?