我正在使用spring数据实现分页,并且我想在我的规范中进行排序。
SELECT *
FROM
(
SELECT distinct *
FROM
(
SELECT p.PROJECT_ID,
p.PROJECT_NAME,
p.PROJECT_TYPE
FROM PROJECT p
LEFT OUTER JOIN code c
ON p.codeId=c.ID
WHERE p.PROJECT_NAME IN ('test')
ORDER BY c.LABEL ASC
)
)
WHERE rownum <= 25;
但我的规范是创建以下脚本
SELECT *
FROM
(
SELECT distinct p.PROJECT_ID,
p.PROJECT_NAME,
p.PROJECT_TYPE
FROM PROJECT p
LEFT OUTER JOIN code c
ON p.codeId=c.ID
WHERE p.PROJECT_NAME IN ('test')
ORDER BY c.LABEL ASC
)
WHERE rownum <= 25;
实际上我在加入后会得到重复记录,所以我添加了不同的函数来获取不同的记录,但是对于order by子句来说,order by参数应该存在于select语句中,这在我的情况下是不可能的,就像在我的实体中一样它不存在我也不能改变它。 所以我只想将项目语句的select语句嵌套到另一个语句中,并且我想在第一个脚本中显示不同的内容。我是Spring jpa的新手,所以任何帮助都会有所帮助。
这是我的规范。
public static Specification<Project> projectListSearchSpec(Set<String> deptNameList, ProjectSearchDto searchDTO) {
return new Specification<Project>() {
@Override
public Predicate toPredicate(Root<Project> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
query.distinct(true);
Predicate all = root.<Project>get("projectName").in(deptNameList);
return all;
}
};
}