GORM标准查询:查找具有特定属性的子项

时间:2012-07-26 17:18:38

标签: grails gorm criteria

拥有以下域模式:

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个产品的详细信息。我需要有2个细节的行,每个细节都有一个产品。

2 个答案:

答案 0 :(得分:2)

感觉你想要移出细节,所以实际上

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

不知道hibernate / gorm如何处理这个问题。

答案 1 :(得分:-1)

您是否尝试在条件dsl中使用“in”语句?

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