【发布时间】:2016-06-20 21:07:54
【问题描述】:
我需要创建一个谓词来从regId = ? (||) or (&&) estCode = ? && latest (referralEntryDate) 所在的表中获取数据
获取最新日期的数据
@Override
public Predicate toPredicate(Root<ReviewMedicalStatus> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicatesReg = new ArrayList<Predicate>();
if (revStatusDto.getRegId() != null && !StringUtils.isEmpty(revStatusDto.getRegId())) {
predicatesReg.add(cb.equal(root.get("regId"), revStatusDto.getRegId()));
}
if (revStatusDto.getEstCode() != null && !StringUtils.isEmpty(revStatusDto.getEstCode())) {
predicatesReg.add(cb.equal(root.get("estCode"), revStatusDto.getEstCode()));
}
Expression maxExpression = cb.max(root.get("referralEntryDate"));
predicatesReg.add(maxExpression);
//predicatesReg.add(cb.max(root.get("referralEntryDate")));
return cb.and(predicatesReg.toArray(new Predicate[predicatesReg.size()]));
}
这是失败的,因为表达式不能作为参数传递给谓词。如何获取最新的referralEntryDate 的数据?
【问题讨论】:
标签: spring jpa predicate criteria-api