首页 > 解决方案 > Spring Pageable Sort 更改属性名称

问题描述

有没有办法映射 Sort 对象的属性?只是一个小例子:

一个Dto

public class OrderDto {
  private long totalAmount;
  private long openAmount;
}

和一个实体

@Entity
public class Order {
  private long amount;
}

和一个控制器

@RestController
public class OrderController {


  @GetMapping("/orders")
  public Page<OrderDto> findOrders(Pageable pageable) {
   // Do something 
  }
}

我现在会打电话/orders?sort=totalAmount,desc

是否可以映射排序属性,在这种情况下,totalAmount从 Dto 到仅以amount一种迷人的方式将其用于生成的 JPA 查询?

标签: javaspringspring-data-jpadtospring-restcontroller

解决方案


我不知道我是否正确地回答了你的问题,但是...

我是否理解您是否正确,您希望将请求参数与通过给定对象的对象可用sort的值映射为(使用 order )?totalAmount,descSortPageableamountdesc

由于您在帖子中提到的名称,我希望您在类路径上有 Spring Data。

IDKFS 但也许类SortHandlerMethodArgumentResolverCustomizer可以帮助您自定义SortHandlerMethodArgumentResolver方式,您可以像想要的那样映射请求参数。

如果没有,应该可以提供一个SortHandlerMethodArgumentResolver实现您想要的行为的@Bean 类型。

我不完全确定框架是否允许覆盖您需要自定义的特定部分,但 IMO 值得一看。:)


推荐阅读