grails - Grails createCriteria的父级与最后一个子级

标签 grails gorm createcriteria

我如何只读取lastChild和parentObject

Parent {
  hasMany[children: Child]
}

这是我的代码
Parent.withCriteria() {
        eq("active", true)
        children {
            order("dateCreated", "desc")
            maxResults(1)
        }
    }

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

最佳答案

GORM / Hibernate中的hasMany没有过滤器语义,并且始终返回所有引用的对象。

在简单的情况下,您必须触发2个查询:查找所有Parents和查找所有最近更新的子级。

另一种选择是颠倒搜索逻辑:首先寻找 child ,按lastUpdated分组,然后拉他们的 parent 。当然,您必须从 child 到 parent 的反向引用:

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

然后查询可能类似于:
Child.withCriteria{
  projections{
    groupProperty 'id'
    max 'lastUpdated'
  }
  parent{
    eq "active", true
  }
}

关于grails - Grails createCriteria的父级与最后一个子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59643533/

相关文章:

grails - Grails从2.4.5升级到3.3.2:关系 'xxx'不存在

grails - 带有条件和/或案例的网格?

grails - 如何在 Bootstrap 中获取 grails 数据源 createdb 属性

hibernate - GORM - 在 Grails 中查询一对多关联

grails - 升级后出现Grails groovy.lang.MissingMethodException

grails - 如何在Grails搜索中返回域对象的属性?

hibernate - 如何使用 Grails Criteria 对 Order 子句中的属性进行分组

hibernate - Grails域delete()是否更新事务中子代的数量

hibernate - Hibernate Create Criteria 中可以有 if 条件吗?

grails - 在 Grails 中以 DRY 方式动态构建 createCriteria?