gpt4 book ai didi

java - JPA查询: join a subquery with grouping condition

转载 作者:行者123 更新时间:2023-12-02 01:59:09 24 4
gpt4 key购买 nike

我有一个代表特定对象的更改事件的实体。像这样的东西:

@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 查询中加入子查询?

在我的情况下,使用 native 查询不是一个选项,因为我使用带有分页功能的 Spring Data JPA 存储库,该功能不适用于 native 查询。

最佳答案

@Query( 
value = "SELECT e FROM Event e " +
"WHERE e.creationDate = " +
"(SELECT max(e2.creationDate) FROM Event e2 " +
"WHERE e2.objectId = e.objectId)"
)

关于java - JPA查询: join a subquery with grouping condition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51891198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com