假设我有一个会议实体.每次会议都有一个出席者和会议日期.在我的会议桌内,我可能会为每位与会者举行多次会议,每个会议日期不同.我需要一个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到参加者和一个简单的时间戳日期.我怀疑我需要做一个组和最大(blah),也许加入我自己,但我不知道最好的方法来处理这个.
更新:
在晚上玩这个之后,我还没有一个可接受的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对象映射到视图我可以确定.