簡體   English   中英

Spring Data REST“ findBy…”未排序

[英]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種對結果進行排序的方法

  1. 使用自定義JPA查詢,如下所示

    @Query("Select r from rack order by position_number ASC")

  2. 使用JPA自定義方法(如您所使用: findByRackOrderByPositionNumberAsc ())

  3. 通過存儲庫方法傳遞排序對象,如下所示

    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/findbyRackhttp://{base}/api/v1/rackPositions/find-byRack
避免戴駱駝帽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM