我有一个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
在邮递员中,返回的列表未排序。 “ 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 网址}
它工作正常。排序参数不起作用是有原因的吗?
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
<S extends T> List<S> findAll(Example<S> example, Sort sort)
答案 2 :(得分:0)
JpaRepository接口扩展了this article。
因此,您可以将终结点用作
http://{base}/api/v1/rackPositions/findbyRack
或http://{base}/api/v1/rackPositions/find-byRack
避免戴骆驼帽。