【问题标题】:Spring custom sorting in Sort.ofSort.of 中的 Spring 自定义排序
【发布时间】:2021-04-21 10:05:21
【问题描述】:

有没有办法使用Sort.of进行这种排序?

    @Query("SELECT l FROM Livestream l WHERE l.status IN ('LIVE', 'FUTURE') ORDER BY CASE WHEN l.status = 'LIVE' THEN -1 ELSE 0 END ASC")
    fun findLiveAndFuture(pageable: Pageable): Page<Livestream>

【问题讨论】:

  • 你可以试试JpaSort.unsafe(ASC, "CASE WHEN l.status = 'LIVE' THEN -1 ELSE 0 END")。但是,不是简单地按l.status 排序吗?
  • @crizzis 谢谢!它以这种方式工作JpaSort.unsafe(ASC, "(CASE WHEN l.status = 'LIVE' THEN -1 ELSE 0 END)")。关于查询,我只是简化了它。原始查询更复杂,排序中的用例

标签: spring hibernate spring-data-jpa spring-data


【解决方案1】:

我不确定最后case 的用法,因为结果很可能同时具有LIVEFUTURE 结果,因此该案例不会按预期工作。

您可以使用Pageable 中的对象Sort 来定义您想要的排序。这需要你使用类似PageRequest 的东西来实现它。

或者您可以使用在存储库中传递Sort 对象,如下所示:

fun findLiveAndFuture(pageable: Pageable, sort: Sort): Page<Livestream>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2011-06-06
    • 2014-06-30
    • 2010-10-27
    • 2013-04-09
    相关资源
    最近更新 更多