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

时间:2015-02-13 09:44:08

标签: grails createcriteria

我有以下场景(域类)

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的过滤和基本排序。

现在,我希望从最近更新的Request开始获取列表(按dateCreated last的字段StatusUpdate的值排序Request

任何提示?

2 个答案:

答案 0 :(得分:1)

假设每个请求至少有一个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] }

答案 1 :(得分:0)

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