我有一个简单的CrudRepository,它接受可排序的:

class PersonReposiroty extends CrudRepository<Person, Long> {
  findAll(Pageable page);
}


我想按两个字段的总和对它进行排序:

dao.findAll(PageRequest.of(page, size, Sort.by("price1, price2"));


问题:首先按price1排序,然后按price2排序。我如何总结呢?

最佳答案

我发现实际上可以按总和排序,如下所示:

private PageRequest pricePageSort() {
    OrderSpecifier<BigDecimal> sort = QPerson.person.price1.add(QPerson.person.price2).asc(); //or .desc()
    return new QPageRequest(pageNumber, pageSize, sort);
}


然后通过以下方式使用它:

dao.findAll(predicate, pricePageSort());


因此,也许querydsl必须为CrudRepository,但无论如何我都在使用它。

09-10 03:16
查看更多