【问题标题】:Spring Boot PagingAndSortingRepository Custom SortSpring Boot PagingAndSortingRepository 自定义排序
【发布时间】:2022-01-19 18:25:02
【问题描述】:

我正在使用 Spring Boot 开发微服务。我正在使用PagingAndSortingRepository 从数据库中获取实体数据。我需要使用自定义排序顺序对数据进行排序。

例如 - 这是为列提供的排序顺序,升序 - BBB+、BBB、BBB-(这里会有更多的值)

但按照传统,当对具有上述值的列执行 order by query 时,升序将是 - BBB、BBB+、BBB-

使用下面的查询我可以实现它:

select value from (select value, decode(value, 'BBB+', 1, 'BBB', 2, 'BBB-', 3) value_weightage from table) order by value_weightage;

有没有办法通过定义值的权重来实现这个弹簧靴PagingAndSortingRepository

一种方法是我可以将查询直接添加为本机查询并对其进行排序。但想知道更好的方法。

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa


    【解决方案1】:

    您可以在您的实体中使用 Hibernate @Formula 创建计算属性:

    @Formula("decode(value, 'BBB+', 1, 'BBB', 2, 'BBB-', 3)") // native sql
    private int weightedValue;
    

    并在指定排序顺序时参考:

    var sort = Sort.by("weightedValue").descending();
    var pageable = PageRequest.of(0, 10, sort);
    var pageResult = repository.findAll(pageable);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多