【问题标题】:Grails "deep" criteria + one-to-many relationGrails“深度”标准+一对多关系
【发布时间】:2015-06-12 18:15:44
【问题描述】:

我有以下表结构:

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)

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    使用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 及其功能。

    【讨论】:

    • 如果在 mandateContacts 表中我只有一个联系人 ID 指向联系人表中的条目怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多