csc*_*ch0 2 spring jpa spring-data-jpa spring-data-rest spring-boot
我有一个 Spring JPA rest 存储库。
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();
Run Code Online (Sandbox Code Playgroud)
}
我希望 findAll() 方法以相反的顺序返回项目。
由于它是一个接口,我不能在这里直接覆盖方法。
这是可能的吗?
您可以在查询方法中使用“OrderBy”和“Desc”关键字:
List<SumLog> findAllByOrderByIdDesc();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您会得到这样的 SQL 查询:
select ... from sum_logs sl order by sl.id desc
Run Code Online (Sandbox Code Playgroud)
更多信息:查询创建
更新
要更改存储库默认方法的行为,您可以使用自己的查询覆盖它们:
@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);
Run Code Online (Sandbox Code Playgroud)
更新 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2828 次 |
| 最近记录: |