gpt4 book ai didi

spring - 如何使用 Spring data REST 在 pagingAndSorting 存储库接口(interface)中反转 findAll() 查询

转载 作者:行者123 更新时间:2023-12-02 08:14:28 29 4
gpt4 key购买 nike

我有一个 Spring JPA 休息存储库。

public interface SumLogRepository extends PagingAndSortingRepository<SumLog, Long> {

//custom query method
List<SumLog> findByFoo(String lastName);

//How do I make this method return the results in REVERSE order?
List<SumLog> findAll();

}

我希望 findAll() 方法以相反的顺序返回项目。

由于它是一个接口(interface),我无法在这里直接重写方法。

这可以做到吗?

最佳答案

您可以在查询方法中使用“OrderBy”和“Desc”关键字:

List<SumLog> findAllByOrderByIdDesc();

在这种情况下,您会得到这样的 SQL 查询:

select ... from sum_logs sl order by sl.id desc

更多信息:Query Creation

已更新

要更改存储库默认方法的行为,您可以使用自己的查询覆盖它们:

@Query("select sl from SimLog order by sl.id desc")
@Override
List<SumLog> findAll();

@Query("select sl from SimLog order by sl.id desc")
@Override
Page<SumLog> findAll(Pageable pageable);

更新2

更灵活的方法 - 如果排序顺序尚未设置,那么我们通过 'id desc' 来设置:

@Override
default Page<SumLog> findAll(Pageable p) {
if (p.getSort().isUnsorted()) {
findAllBy(PageRequest.of(p.getPageNumber(), p.getPageSize(), Sort.by(Sort.Direction.DESC, "id")));
}
return findAllBy(p);
}

Page<SumLog> findAllBy(Pageable pageable);

关于spring - 如何使用 Spring data REST 在 pagingAndSorting 存储库接口(interface)中反转 findAll() 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51004742/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com