hibernate-criteria - 如何将 Hibernate Criteria 对象用于多个和/或条件

标签 hibernate-criteria

我需要创建一个 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/

    相关文章:

    java - Hibernate标准返回包含相同对象的列表,如何解决它?

    java - Hibernate Criteria - 投影中的多种实体类型

    java - hibernate .jpa.criteria.BasicPathUsageException : Cannot join to attribute of basic type

    oracle - 在 Hibernate Criteria 中使用 ORACLE rowId

    java - 谓词与抽象类类型定义之间的 Hibernate 标准构建器

    java - Hibernate 多对多标准投影

    java - 如何让 HIbernate 获取根实体的所有属性以及关联实体的特定属性?

    java - Hibernate Criteria 集合的最新日期字段

    java - 有没有办法将 jpa 谓词数组传递给 KOTLIN 中的 criteriabuilder?

    java - Hibernate:如何在相同条件下重用别名?