[英]Spring Data REST “findBy…” not sorting
我有一個Spring Boot API(使用2.0.5.RELEASE spring-boot-starter-parent),我正在使用spring-boot-starter-rest包來生成我的API的端點。 在其中一個存儲庫中,我具有以下方法:
@Repository
public interface RackPositionDao extends JpaRepository<RackPosition, String> {
List<RackPosition> findByRack(@Param("rack") Rack rack);
}
在http:// {base} / api / v1 / rackPositions / findByRack處公開端點
如果我再打電話
http:// {base} / api / v1 / rackPositions / findByRack?rack = {rack url}&sort = positionNumber,asc
在Postman中,返回的列表未排序。 “ positionNumber”是RackPosition實體上的屬性。
但是,如果我將存儲庫方法更改為
@Repository
public interface RackPositionDao extends JpaRepository<RackPosition, String> {
List<RackPosition> findByRackOrderByPositionNumberAsc(@Param("rack") Rack rack);
}
然后打電話
http:// {base} / api / v1 / rackPositions / findByRackOrderByPositionNumberAsc?rack = {rack url}
它工作正常。 排序參數不起作用是有原因的嗎?
Spring數據JPA中有2種對結果進行排序的方法
使用自定義JPA查詢,如下所示
@Query("Select r from rack order by position_number ASC")
使用JPA自定義方法(如您所使用: findByRackOrderByPositionNumberAsc
())
通過存儲庫方法傳遞排序對象,如下所示
List<RackPosition> findByRack(@Param("rack") Rack rack,org.springframework.data.domain.Sort sort);
然后調用如下方法
Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
Object obj = repo.findByRack(rackObject, sort);
請遵循以下步驟: https : //docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/repository/JpaRepository.html
<S extends T> List<S> findAll(Example<S> example, Sort sort)
JpaRepository接口擴展了PagingAndSortingRepository接口 。
因此,您可以將終結點用作
http://{base}/api/v1/rackPositions/findbyRack
或http://{base}/api/v1/rackPositions/find-byRack
避免戴駱駝帽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.