如何使用 spring jpa 分页获取列中的不同值以及总计数

How to get the distinct values in a column as well as total count using spring jpa pagination

我正在尝试 select C 列的唯一值列表以及相应的计数。我的代码如下

    @Query(value = "SELECT DISTINCT t.C FROM table t WHERE t.param = :param order by t.C",
        countQuery = "SELECT count(DISTINCT t.C) FROM table t WHERE t.param = :param")
    Page<String> findUniqueWithCountPagination(Pageable pageable,
        @Param("param") String param);

我收到错误 ORDER BY items must appear in the select list if SELECT DISTINCT is specified。当我启用 show-sql 属性 时,我注意到 Spring 自动将另一列 U 添加到 order by filter。 U 是 table t.

中的时间戳列

如何去掉order by中不需要的字段U?如果那不可能,是否有任何其他方法可以根据我的要求编写查询?

我只需要 C 列中的唯一值并且它很重要,所以我对 C 本身应用了排序并将其从查询中删除。 order by 在执行期间自动应用。代码片段如下:

 Pageable pageable = PageRequest.of(filterOption.getPageNo(), filterOption.getPageSize(), Sort.Direction.DESC, C);


 // repository class
 @Query(value = "SELECT DISTINCT t.C FROM table t WHERE t.param = :param",
 countQuery = "SELECT count(DISTINCT t.C) FROM table t WHERE t.param = :param")
 Page<String> findUniqueWithCountPagination(Pageable pageable,
 @Param("param") String param);