我需要创建一个 Hibernate 标准限制,或者 3 个条件。问题是最后一个条件实际上是使用 AND 运算符的条件。
我的第一个条件:
Criterion startInRange = Restrictions.between("expectedStartCanonicDate",
rangeStart, rangeEnd);
我的第二个条件:
Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate",
rangeStart, rangeEnd);
我的第三个条件需要将以下两个条件 AND 在一起:
criteria.add(Restrictions.le("expectedStartCanonicDate", rangeStart));
criteria.add(Restrictions.ge("expectedCompletionCanonicDate", rangeEnd));
我想做的限制是条件 1 或条件 2 或条件 3。我找到了让我接近的例子。我可以使用 LogicalExpression 或前两个条件一起使用,但是,我不确定如何
or
3 个条件,特别是当最后一个条件实际上是两个独立的条件时 ' anded
' 一起。有什么想法吗?
弗雷德
最佳答案
与 or
相关联的一系列限制称为析取。与 and
相关联的一系列限制称为连词。
所以,你需要的是
所以这里是这样的:
Criterion startInRange = Restrictions.between("expectedStartCanonicDate", rangeStart, rangeEnd);
Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate", rangeStart, rangeEnd);
Criterion thirdCondition =
Restrictions.conjunction().add(Restrictions.le("expectedStartCanonicDate", rangeStart))
.add(Restrictions.ge("expectedCompletionCanonicDate", rangeEnd));
Criterion completeCondition =
Restrictions.disjunction().add(startInRange)
.add(endInRange)
.add(thirdCondition);
criteria.add(completeCondition);
关于hibernate-criteria - 如何将 Hibernate Criteria 对象用于多个和/或条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194260/