Сортировать по свойствам в ассоциации один-ко-многим
У меня есть следующий сценарий (классы домена)
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
s начиная с самого последнего обновления (упорядоченного по значению поля dateCreated
из last
StatusUpdate
для 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 интерфейс. Здесь у вас есть хороший пример ссылки