Сортировать по свойствам в ассоциации один-ко-многим

У меня есть следующий сценарий (классы домена)

class Request { 
    String title                
    List statusUpdates

    static hasMany = [statusUpdates: StatusUpdate]
}

а также

class StatusUpdate {

    Date dateCreated
    String statusFrom
    String statusTo
    String notes

    static belongsTo = Request
}

Я сейчас пользуюсь createCriteria реализовать фильтрацию и базовую сортировку запроса.

Теперь я хочу получить список Requests начиная с самого последнего обновления (упорядоченного по значению поля dateCreated из lastStatusUpdate для Request)

Любой намек?

2 ответа

Решение

Предполагая, что каждый запрос имеет по крайней мере один StatusUpdate и слегка изменяя объявление ownTo, вы можете пойти в другом направлении:

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] }

Вы можете использовать Comparator или Comparable интерфейс. Здесь у вас есть хороший пример ссылки

Другие вопросы по тегам