unk*_*404 6 sorting jpa spring-data-jpa
实体 编号 | ... | 特别(整数) | 默认值(整数)NOT NULL ------------------------------------------------- 10 | 10 ... | 空 | 100 11 | 11 ... | 85 | 85 90 12 | 12 ... | 40| 80 13 | ... | 空 | 70
这应该在 spring 中排序,如果不为空,则取“special”列的值,否则取“default”列的值
如果我用 Sort.by("special", "default") 对它进行排序,它将产生两个(虚构的)组:
12 (40) 11 (85) 13 (70) 10 (100)
但它应该是:
12 (40) 13 (70) 11 (85) 10 (100)
tl;dr:如何排序“如果不为空,则取此值,否则,取不同列的值”
cri*_*zis -1
所以,本质上你想要ORDER BY CASE WHEN special IS NOT NULL THEN special ELSE default END。
TryJpaSort.unsafe("CASE WHEN ...")而不是Sort.by(...),它接受任意表达式而不是属性名称。
(顺便说一句COALESCE(special, default),也许也可以,但我不确定,你需要检查一下)