gpt4 book ai didi

java - JPA 每组最新行

转载 作者:行者123 更新时间:2023-12-01 17:53:27 24 4
gpt4 key购买 nike

我有一个具有以下结构的表:

审核表

|    ID     |   User    |  Log In Date  |    Other Info e.g. IP    |
|-----------|-----------|---------------|--------------------------|
| 0 | 1 | 2017/11/10 | ... |
| 1 | 1 | 2017/12/10 | ... |
| 2 | 2 | 2017/10/10 | ... |
| 3 | 3 | 2017/09/08 | ... |

在我的 AuditRepository 中,我想创建一个方法来提取每个用户最近/最新登录日期的 Audit

审核

@Entity
@Table(name = "Audit")
public class Audit {

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;

private Instant loginDate

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "User")
private User user;

// Other fields
}

如何编写可以实现此目的的存储库@Query

到目前为止我已经尝试过

@Query(value =
"SELECT a FROM Audit a " +
"LEFT JOIN Audit a1 ON a.loginDate > a1.loginDate AND a.user = a1.user " +
"WHERE a1.user IS NULL"
)

但是我遇到了一个异常QuerySyntaxException:加入的预期路径!

最佳答案

我没有数据可以测试,但我认为在 sql 中这应该可以工作:

SELECT a 
FROM Audit a
WHERE loginDate=(
SELECT MAX(loginDate)
FROM Audit
WHERE user = a.user);

关于java - JPA 每组最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47515709/

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