Spring 数据 REST "findBy..." 未排序
Spring Data REST "findBy..." not sorting
我有一个 Spring 引导 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}
它工作正常。是否有排序参数不起作用的原因?
<S extends T> List<S> findAll(Example<S> example, Sort sort)
JpaRepository 接口扩展 PagingAndSortingRepository interface.
因此,您可以将端点用作
http://{base}/api/v1/rackPositions/findbyRack
或 http://{base}/api/v1/rackPositions/find-byRack
通过避免骆驼帽。
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);
我有一个 Spring 引导 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}
它工作正常。是否有排序参数不起作用的原因?
<S extends T> List<S> findAll(Example<S> example, Sort sort)
JpaRepository 接口扩展 PagingAndSortingRepository interface.
因此,您可以将端点用作
http://{base}/api/v1/rackPositions/findbyRack
或 http://{base}/api/v1/rackPositions/find-byRack
通过避免骆驼帽。
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);