如何使用可分页Spring数据JPA选择不同的值?

Vin*_*tis 7 java sql postgresql spring spring-data-jpa

我想在我的表中使用分页进行不同的选择,但它声称存在此错误。有谁知道如何解决它?

错误:

org.postgresql.util.PSQLException: ERROR:
for SELECT DISTINCT, ORDER BY expressions must appear in select list
Run Code Online (Sandbox Code Playgroud)
@Query(value = "SELECT DISTINCT budget.* FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id ORDER BY budget.created DESC, ?#{#pageable}", 
        countQuery = "SELECT DISTINCT count(*) FROM budget LEFT JOIN user_budget ON budget.id = user_budget.budget_id", 
        nativeQuery = true) 
public Page<Budget> findAllByfilter(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

Alb*_*ina 0

我知道这是一个老问题,但我想为正确的答案添加一些解释。问题更集中在 PostgreSQLDISTINCT ON子句上。

正如文档所说,

  • SELECT DISTINCT子句从结果(整个元组)中消除重复行。
  • SELECT DISTINCT ON (your_column1, your_column2 ...)消除与所有指定表达式匹配的行(指定列对行进行排序并从结果集中删除重复项)。
    为了保持返回结果集的顺序可预测,最好使用ORDER BY子句。
    注意:如果将DISTINCT ON子句与ORDER BY表达式一起使用,则最左边的ORDER BY表达式必须与表达式匹配DISTINCT ON

此答案中包含更多详细信息。