Como consultar uma lista ordenando pela maior data de um objeto filho (Criteria)
20/06/2021 00:44
0
De acordo com as classes de domínio:

class Entity {    
?static hasMany = [childrens: Children]}

class Children {
?Date date
}


Usando Criteria, como faço para fazer uma consulta de Entity's ordenando pela maior data de Children?

Algo como isso aqui no SQL:

SELECT    
? *
FROM
? entity
INNER JOIN
? children c1 ON c1.entity_id = entity.idWHERE c1.date =
(SELECT MAX(c2.date) FROM children c2 WHERE c2.entity_id = c1.entity_id)
ORDER BY c1.date DESC

O máximo que eu consegui até agora foi isso aqui:

Entity.createCriteria().list(params) {
childrens {
projections {
groupProperty 'entity'
max 'date', 'maxDate'
}
}
order 'maxDate', 'desc'
}

Isso retorna os registros que eu quero, mas por causa do projection, não retorna e nem preenche os atributos de entity (como são vários, não vale a pena botar todos no projection).

Alguém tem alguma ideia?
Tags: Grails, GORM, CRITERIA, QUERY


Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.12.1
itexto