如何在使用Criteriabuilder时连接两个结果
我使用CriteriaBuilder,其中我使用两个表Student和StudentResult。
查询API时
http://localhost:8080/student?query=grade:5,lastRollResult%40SUCCESS%23FAILURE
在这种情况下,我可以从Join results = root.join("lastRollResult", JoinType.INNER);
获取数据,这是从StudentResult Table获取的。
类似地,当我传递null值作为lastRollResult时,我从return root.get("lastRunId");
获取数据,这是从学生表中获取的,因为没有结果,所以结果列为null。
我的问题是如何连接这两个结果,当我传递任何枚举,如成功或失败与null。
@Override
protected Expression<String> getPath(SearchCriteria criteria, Root<Student> root) {
if (criteria.getKey().equals("lastRollResult")) { // codition check null. avoid join.
if (!"null".equals(criteria.getValue())) {
Join results = root.join("lastRollResult", JoinType.INNER);
return results.get("result");
} else {
return root.get("lastRollId");
}
}
return root.get(criteria.getKey());
}
字符串
这是我的类定义:public abstract class BaseSpecification<M> implements Specification<M>
个
1条答案
按热度按时间sgtfey8w1#
你可以通过使用
criteriaBuilder.selectCase()
来实现条件连接,这里是一个如何修改代码的例子。字符串
在这个例子中,我使用了
criteriaBuilder.selectCase()
,它创建了一个基于lastRollResult
的条件表达式。如果成功,它将连接lastRollResult
表并获取result
列,否则它将返回Student
表中的lastRollResult
。请确保根据您的需要进行代码调整,这只是一个示例。