JPA Выберите последний экземпляр для каждого элемента

Допустим, у меня есть Собрание. У каждой встречи есть один участник и дата встречи. За моим столом для собраний у меня может быть несколько встреч для каждого участника с разными датами для каждого. Мне нужен запрос JPA, который выберет только последнее собрание для всех участников. Например, если моя таблица выглядит так

Meeting ID | Attendee ID | Meeting Date
1          | 1           |  6/1/2011
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011

Мой результат должен быть

Meeting ID | Attendee ID | Meeting Date
2          | 2           |  6/1/2011
3          | 1           |  6/6/2011
4          | 3           |  6/6/2011

Использование JPA 2 против postgres. Встреча имеет 1-1 для участников и простую дату с отметкой времени. Я подозреваю, что мне нужно будет создать группу by and max (бла) и, возможно, присоединиться к самому себе, но я не уверен, как лучше подойти к этому.

Обновление: Проведя вечер, играя с этим, у меня все еще нет приемлемого решения JPQL для этого. Вот что у меня есть на данный момент:

select m from Meeting m 
where m.meetingDate in 
    ( select max(meet.meetingDate) 
      from Meeting meet group by meet.attendee )

У меня есть различные другие условия, которые не имеют отношения к этому вопросу, например фильтрация по отделам посетителей и так далее. Единственная причина, по которой это работает, заключается в том, что мы отслеживаем дату встречи до второй (или более точной), и вероятность того, что будут две встречи в одно и то же время, минимальна. Мы добавляем в него некоторые элементы Java, чтобы сохранить только последнюю встречу для каждого участника на тот случай, если у нас будет два одновременно, но это довольно дрянное решение. На самом деле это не должно быть слишком сложно получить все это в запросе, но я еще не понял этого.

Update2: Добавление тега sql, потому что если мне нужно использовать sql для создания представления и создания Объект JPA для сопоставления с представлением. Я согласен с этим.

22
задан digitaljoel 10 June 2011 в 20:28
поделиться