Precisa de ajuda com consulta HQL
-
27-10-2019 - |
Pergunta
Eu tenho uma classe simples, chamada Pessoa , da seguinte maneira:
public class Person {
private Integer id;
private String name;
private List<PersonState> states;
...
}
E cada PersonState é definido como:
public class PersonState {
private Integer id;
private State state;
private Date date;
...
}
E Estado é uma classe simples, contendo apenas um id e nome , e eu tenho todos os arquivos de mapeamento configurados e funcionando.
Desejo obter as Pessoas cujo último Estado da Pessoa (com base em sua data ) tenha um Estado com id = 5 (por exemplo), então como seria a consulta HQL? Obrigado!
Solução
Algo assim:
SELECT p FROM Person p JOIN p.states ps1
WHERE
ps1.date = (SELECT MAX(ps2.date) FROM PersonState ps2 WHERE ps2 MEMBER OF p.states)
AND ps1.state.id = ?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow