【发布时间】:2020-07-07 09:09:35
【问题描述】:
我正在使用 JPA 规范来检索我的 Spring Boot 应用程序的数据。
我有一个如下的 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()
);
【问题讨论】:
-
按 colB = 'C' 的顺序无效。你想做 where colB = 'C' 还是别的什么?
-
@SimonMartinelli 这是一个合法的查询。参考stackoverflow.com/questions/5417980/…
-
但就标准而言,它不是一个有效的 SQL 语句。所以你不能把它转换成 JPA 查询
-
@SimonMartinelli 我想我没有说清楚,我使用的是 mySQL 查询。
-
我知道。我说你不能在 JPA Criteria 中打开你的查询,因为它不是 SQL 标准
标签: spring jpa spring-data-jpa spring-data