如何针对多个和/或条件使用 Hibernate Criteria 对象

2024-02-17

我需要创建一个 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 将前两个条件组合在一起,但是,我不知道如何or3 个条件,特别是当最后一个条件实际上是两个单独的条件时'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(使用前将#替换为@)

如何针对多个和/或条件使用 Hibernate Criteria 对象 的相关文章

随机推荐