Grails createCriteria parent 最后 child

Grails createCriteria parent with last child

如何只读取 lastChild 和 parentObject

Parent {
  hasMany[children: Child]
}

这是我的代码

Parent.withCriteria() {
        eq("active", true)
        children {
            order("dateCreated", "desc")
            maxResults(1)
        }
    }

但是没有用。我如何阅读 Parent 最近更新的 child

GORM/Hibernate 中的

hasMany 没有过滤器语义并且总是 returns 全部引用 objects.

在 straight-forwad 情况下,您必须触发 2 个查询:查找所有 Parents 和查找所有最后更新的 children.

另一种选择是反转搜索逻辑:寻找 children 1st,将它们按 lastUpdated 分组,然后拉出它们的 parents。当然,你必须有一个从Child到Parent的back-ref:

class Child {
  static belongsTo = [ parent:Parent ]
}

那么查询可能类似于:

Child.withCriteria{
  projections{
    groupProperty 'id'
    max 'lastUpdated'
  }
  parent{
    eq "active", true
  }
}