Grails GORM条件查询:查找具有特定属性的子项

Grails GORM条件查询:查找具有特定属性的子项,grails,gorm,criteria,Grails,Gorm,Criteria,具有以下域模式: class TransactionHeader { static hasMany = [details: TransactionDetail] } class TransactionDetail { static belongsTo = [header: TransactionHeader] Product product } 我正在尝试编写一个条件查询,该查询将返回包含两种不同产品的TransactionDetails的所有TransactionHeade

具有以下域模式:

class TransactionHeader {
  static hasMany = [details: TransactionDetail]
}

class TransactionDetail {
   static belongsTo = [header: TransactionHeader]
   Product product
}
我正在尝试编写一个条件查询,该查询将返回包含两种不同产品的TransactionDetails的所有TransactionHeader行。这就是我到目前为止所做的,它并不是我想要的:

def list = TransactionHeader.withCriteria {
    details {
      and {
        eq("product", product1)
        eq("product", product2)
      }
    }
}

实际情况是,返回的行至少包含1个产品的1个详细信息。我需要有2个详细信息的行,每个行有一个产品。

感觉您想从中删除详细信息,所以实际上

def list = TransactionHeader.withCriteria {
    and {
       details {
          eq("product", product1)
       }
       details {
          eq("product", product2)
       }
    }
}

不过,不确定hibernate/gorm将如何处理这个问题

感觉你想把细节从中移开,所以实际上

def list = TransactionHeader.withCriteria {
    and {
       details {
          eq("product", product1)
       }
       details {
          eq("product", product2)
       }
    }
}
不过,不确定hibernate/gorm将如何处理这个问题

您是否尝试过在您的标准dsl中使用“in”语句

def list = TransactionHeader.withCriteria {
    and {
       details {
          'in'("product", [product1, product2])
       }
    }
}
您是否尝试过在您的标准dsl中使用“in”语句

def list = TransactionHeader.withCriteria {
    and {
       details {
          'in'("product", [product1, product2])
       }
    }
}

在流程中作为一个OR,这不是我想要的。我已经接受了正确的答案。明白了,很抱歉,我没有意识到和constraintin过程作为OR,这不是我想要的。我已经接受了正确的答案。明白了,很抱歉,我没有意识到和约束