我正在使用JPA规范为我的Spring启动应用程序检索数据。
我有一个如下所示的mySQL查询来获取我想要的列表:
select *
from TableA
order by colB = 'C' DESC, colB;结果:
no | colB
3 | C
1 | A
2 | B
4 | D我的问题是,是否有可能转换为JPA规范?我已经到处找过了,但是找不到我想要的。
Page<Object> page = tableARepository.findAll(
(Specification<Object>) (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (sortConfig.getSpecification() != null) {
Predicate predicate = sortConfig.getSpecification().toPredicate(root, criteriaQuery, criteriaBuilder);
predicates.add(predicate);
}
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
},
sortConfig.getPageable()
);发布于 2020-07-10 04:55:42
JPA中没有对应的查询,因为它是特定于供应商的。正如crizzis所说,您可以做的是创建一个ORDER BY CASE子句。例如:
ORDER BY
CASE
-- First condition with higher priority
WHEN priority = 1 AND situation_id = 2 THEN 1
-- Second condition with less priority
WHEN situation_id = 1 THEN 2
-- Third condition
WHEN priority = 0 AND situation_id = 2 THEN 3
-- Fourth condition
WHEN situation_id = 3 THEN 4
END,
-- Second ordering column
creation_date DESC然后用它创建一个JPQL查询。
发布于 2020-07-13 21:49:25
我还没有测试过,但是你可以尝试下面这样的东西!
tableARepo.findAllByColBByOrderByColBDesc(col_b_type col_b_parameter)或者也许
tableARepo.findAllByColBByOrderByColBDesc(String colB)https://stackoverflow.com/questions/62771785
复制相似问题