繁体   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