我有一个代表特定对象的更改事件的实体。就像是:@Entitypublic class Event { @Id private String eventId; private String objectId; private Instant creationDate; // other fields, getters, setters}一个特定的可能有多个事件对象objectId。现在我需要查询 eachobjectId(那些具有最大creationDategroping by 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 存储库,该功能不适用于本机查询。
2 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
森林海
TA贡献2011条经验 获得超2个赞
@Query(
value = "SELECT e FROM Event e " +
"WHERE e.creationDate = " +
"(SELECT max(e2.creationDate) FROM Event e2 " +
"WHERE e2.objectId = e.objectId)"
)
添加回答
举报
0/150
提交
取消