hasMany
в GORM / Hibernate НЕ имеет семантику фильтра и всегда возвращает все ссылочные объекты.
В прямом направлении вам нужно запустить 2 запроса: найти все Parents
и найти всех последних обновленных детей.
Другой вариант - изменить логику поиска c: сначала найдите детей, сгруппируйте их по lastUpdated
, а затем вытащите их родителей. Конечно, вы должны иметь обратный рефлекс от дочернего элемента к родительскому:
class Child {
static belongsTo = [ parent:Parent ]
}
Тогда запрос может выглядеть примерно так:
Child.withCriteria{
projections{
groupProperty 'id'
max 'lastUpdated'
}
parent{
eq "active", true
}
}