我需要创建一个 Hibernate 标准限制来满足 3 个条件。问题是最后一个条件实际上是使用 AND 运算符的条件。
我的第一个条件:
Criterion startInRange = Restrictions.between("expectedStartCanonicDate",
rangeStart, rangeEnd);
我的第二个条件:
Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate",
rangeStart, rangeEnd);
我的第三个条件需要将以下两个条件组合在一起:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)