【问题标题】:Spring & JPA: Sort by value, if null take other valueSpring & JPA:按值排序,如果 null 取其他值
【发布时间】:2020-03-11 10:38:49
【问题描述】:
实体 编号 | ... |特殊 (int) |默认 (int) 非空 ------------------------------------------------- 10 | ... |空 | 100 11 | ... | 85 | 90 12 | ... | 40 | 80 13 | ... |空 | 70

这应该在spring中排序,如果不为null,则取“special”列的值,否则取“default”列的值

如果我用 Sort.by("special", "default") 对其进行排序,它将产生两个(虚构的)组:

12 (40) 11 (85) 13 (70) 10 (100)

但应该是:

12 (40) 13 (70) 11 (85) 10 (100)

tl;dr:如何排序像“如果不为空,则取这个,否则,取不同列的值”

【问题讨论】:

    标签: sorting jpa spring-data-jpa


    【解决方案1】:

    所以,基本上你想ORDER BY CASE WHEN special IS NOT NULL THEN special ELSE default END

    尝试JpaSort.unsafe("CASE WHEN ...") 而不是Sort.by(...),它接受任意表达式而不是属性名称。

    (顺便说一句 COALESCE(special, default) 可能也可以,但我不确定,你需要检查一下)

    【讨论】:

      猜你喜欢
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多