为了账号安全,请及时绑定邮箱和手机立即绑定

JPA 查询:加入具有分组条件的子查询

JPA 查询:加入具有分组条件的子查询

侃侃无极 2021-07-14 16:04:37
我有一个代表特定对象的更改事件的实体。就像是:@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 回答

?
森林海

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)"

)


查看完整回答
反对 回复 2021-07-29
  • 2 回答
  • 0 关注
  • 314 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信