Java “弹簧数据休息”;“通过……查找”;不分类

Java “弹簧数据休息”;“通过……查找”;不分类,java,spring,spring-boot,spring-data-rest,Java,Spring,Spring Boot,Spring Data Rest,我有一个SpringBootAPI(使用2.0.5.0版本的SpringBootStarter父版本),我正在使用SpringBootStarter rest包为我的API生成端点。在其中一个存储库中,我有以下方法: @Repository public interface RackPositionDao extends JpaRepository<RackPosition, String> { List<RackPosition> findByRack(@Par

我有一个SpringBootAPI(使用2.0.5.0版本的SpringBootStarter父版本),我正在使用SpringBootStarter rest包为我的API生成端点。在其中一个存储库中,我有以下方法:

@Repository
public interface RackPositionDao extends JpaRepository<RackPosition, String> {
    List<RackPosition> findByRack(@Param("rack") Rack rack);
}
@存储库
公共接口RackPositionDao扩展了JpaRepository{
列出findByRack(@Param(“机架”)机架);
}
它在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);
}
@存储库
公共接口RackPositionDao扩展了JpaRepository{
列出findByRackOrderByPositionNumberAsc(@Param(“rack”)rack rack);
}
然后打电话

http://{base}/api/v1/rackPositions/findByRackOrderByPositionNumberAsc?rack={rack url}

它很好用。排序参数不起作用有什么原因吗?

请遵循以下步骤:

List findAll(示例,排序)
请遵循以下步骤:

List findAll(示例,排序)

jpa存储接口扩展

因此,您可以将端点用作
http://{base}/api/v1/rackPositions/findbyRack
http://{base}/api/v1/rackPositions/findbyRack


避免戴骆驼帽

JpaRepository接口扩展

因此,您可以将端点用作
http://{base}/api/v1/rackPositions/findbyRack
http://{base}/api/v1/rackPositions/findbyRack


避免戴骆驼帽

有两种方法可以对Spring数据JPA中的结果进行排序

  • 使用自定义JPA查询,如下所示

    @Query(“按位置编号ASC从机架订单中选择r”)

  • 使用JPA自定义方法(正如您使用的:
    findByRackOrderByPositionNumberAsc
    ())

  • 在存储库方法中传递排序对象,如下所示

    Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
    Object obj  = repo.findByRack(rackObject, sort);
    
    List findByRack(@Param(“rack”)rack-rack,org.springframework.data.domain.Sort)

  • 并按如下方式调用该方法

    Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
    Object obj  = repo.findByRack(rackObject, sort);
    

    有两种方法可以对Spring数据JPA中的结果进行排序

  • 使用自定义JPA查询,如下所示

    @Query(“按位置编号ASC从机架订单中选择r”)

  • 使用JPA自定义方法(正如您使用的:
    findByRackOrderByPositionNumberAsc
    ())

  • 在存储库方法中传递排序对象,如下所示

    Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
    Object obj  = repo.findByRack(rackObject, sort);
    
    List findByRack(@Param(“rack”)rack-rack,org.springframework.data.domain.Sort)

  • 并按如下方式调用该方法

    Sort sort = new Sort(new Sort.Order(Direction.ASC, "lastName"));
    Object obj  = repo.findByRack(rackObject, sort);
    

    我一直使用
    findBy…OrderBy..
    接口-您认为
    sort
    参数在哪里可以工作?尝试更改
    http://{base}/api/v1/rackPositions/findByRack?rack={rack url}&sort=positionNumber,asc
    http://{base}/api/v1/rackPositions/search/rack?rack={rack url}&sort=positionNumber,asc
    @ScaryWombat@MatthewSatti如下面所述,您不应该使用URL中的
    查找部分,URL的结构看起来有点像different@Kartik很高兴我能来这里,learnI一直在使用
    findBy…OrderBy..
    接口-您认为
    sort
    参数在哪里可以工作?尝试更改
    http://{base}/api/v1/rackPositions/findByRack?rack={rack url}&sort=positionNumber,asc
    to
    http://{base}/api/v1/rackPositions/search/rack?rack={rack url}&sort=positionNumber,asc
    @ScaryWombat@MatthewSatti如下面所述,您不应该使用url中的
    findBy
    部分,URL的结构看起来有点像different@Kartik很高兴我能来这里学习,请注意上面的构造函数(
    Sort(Order…orders)
    )已被Spring 2.1.3弃用,所以请改用它:
    Sort Sort=new Sort(Sort.Direction.ASC,“lastName”)请注意,上面的构造函数(
    Sort(Order…orders)
    )已被Spring 2.1.3弃用,因此请改用它:
    Sort Sort=new Sort(Sort.Direction.ASC,“lastName”)