Spring JPA规范,条件括号

时间:2019-03-15 10:01:45

标签: java spring spring-data-jpa

如何在以下条件下使用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

1 个答案:

答案 0 :(得分:1)

您可以构建“OR”规范,然后为第一个规范添加“AND”规范

30
<块引用>

spec 实际上等于 (spec1 OR spec2) AND spec3