Grails“深层”标准+一对多关系

时间:2015-06-12 18:15:44

标签: grails gorm

我有以下表结构:

Task - (has one) - mandate
Mandate - (has many) - mandateContacts (of type Contact)
Contact

当然,Hibernate创建了一个名为mandate_contact的表,它将这些联系人链接到授权。

我必须从Task表开始写一个标准,听起来像是:

Fetch a task if one of the contacts associated to a mandate has a specific name.

到目前为止,我创建了像:

这样的别名
createAlias('mandate', 'mnd', CriteriaSpecification.LEFT_JOIN)

1 个答案:

答案 0 :(得分:0)

使用criteria builder

非常简单
def results = Task.createCiteria().list() {
  mandate {
    mandateContacts {
      eq('name', 'whatever value you want to match')
    }
  }
}

以上假设您的Task域类具有mandate域类类型的Mandate属性。 Mandate有一个名为mandateContacts的集合,它是Contact域类的集合,Contact域类有一个名为name的属性,你想要的与之匹敌。

我建议您阅读我链接的文档,以了解createCriteria及其运行方式。