【发布时间】:2019-01-24 05:58:38
【问题描述】:
我有一个表示特定对象的更改事件的实体。比如:
@Entity
public class Event {
@Id
private String eventId;
private String objectId;
private Instant creationDate;
// other fields, getters, setters
}
对于特定的objectId,可能有多个事件对象。
现在我需要查询每个objectId 的所有最新事件(那些最大creationDate 由objectId 摸索的事件)。
如果是纯 SQL,我会编写以下查询:
SELECT event.*
FROM
event event
JOIN (
SELECT
e.object_id object_id,
MAX(e.creation_date) last_date
FROM event e
GROUP BY e.object_id
) latest_event
ON latest_event.object_id = event.object_id
AND event.creation_date = latest_event.last_date
但不幸的是,类似的连接在 JPA 查询中不起作用。
问题:如何在 JPA 查询中加入子查询?
在我的情况下,使用本机查询不是一个选项,因为我使用带有分页功能的 Spring Data JPA 存储库,这不适用于本机查询。
【问题讨论】:
标签: java sql spring-data-jpa hql jpql