如何在以下条件下使用spring JPA规范:
cond1和(cond2或cond3)在哪里
AND
位置(cond1和cond2)或cond3 。
规格代码如下:
Specification<DocRecord> updatedAtAndCountGTZeroSpec = new Specification<DocRecord>() {
@Override
public Predicate toPredicate(Root<DocRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.or(
(cb.and(
cb.lessThanOrEqualTo(root.get("updatedAt"),new Timestamp(now.getTimeInMillis())),
cb.lessThan(root.get("attemptCount"), 3))
),
(cb.equal(root.get("attemptCount"), 0))
);
}
};
上面是条件如下的生产
其中docrecord0_.updated_at <吗? 和docrecord0_.attempt_count <3 或docrecord0_.attempt_count = 0
答案 0 :(得分:1)
您可以构建“OR”规范,然后为第一个规范添加“AND”规范
30
<块引用>
spec 实际上等于 (spec1 OR spec2) AND spec3