在一对多关联中按 属性 排序

Sort by property in one-to-many association

我有以下场景(域 类)

class Request { 
    String title                
    List statusUpdates

    static hasMany = [statusUpdates: StatusUpdate]
}

class StatusUpdate {

    Date dateCreated
    String statusFrom
    String statusTo
    String notes

    static belongsTo = Request
}

我目前正在使用 createCriteria 来实现请求的过滤和基本排序。

现在我想获得一个 Request 的列表,从最近更新的开始(按 last StatusUpdate 的字段 dateCreated 的值排序)对于 Request)

有什么提示吗?

您可以使用 Comparator 或 Comparable 接口。 这里有一个很好的例子 link

假设每个 Request 至少有一个 StatusUpdate 并且稍微改变 belongsTo 声明,你可以换个方向:

class StatusUpdate {

    Date dateCreated
    String statusFrom
    String statusTo
    String notes

    static belongsTo = [req: Request] // I assume that naming the field "request" would cause whole bunch of weird problems, therefore "req"
}

StatusUpdate.createCriteria().list() {
    req {
        // your criteria for requests filtering
    }
    projections {
        groupProperty 'req', 'reqAlias'
        max 'dateCreated', 'maxDateCreatedAlias'
    }
    order 'maxDateCreatedAlias', 'desc'
}.collect { it[0] }