Нужна помощь с HQL-запросом - PullRequest
0 голосов
/ 31 января 2011

У меня есть простой класс, называемый Person , следующим образом:

public class Person {
    private Integer id;
    private String name;
    private List<PersonState> states;
    ...
}

И каждый PersonState определяется как:

public class PersonState {
    private Integer id;
    private State state;
    private Date date;
    ...
}

И State - это простой класс, содержащий только id и name , и у меня настроены и работают все файлы сопоставления.

Я хочу получить те лиц , чьи последние PersonState (на основе его дата ) имеют состояние с id = 5 (например), так как будет выглядеть запрос HQL?Спасибо!

1 Ответ

1 голос
/ 31 января 2011

Примерно так:

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 = ?
...