gpt4 book ai didi

jpa - JPQL 中的右连接

转载 作者:行者123 更新时间:2023-12-04 08:14:43 26 4
gpt4 key购买 nike

我有以下 JPA实体:

@Entity
class UserClient{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
}

@Entity
class UserAccess{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@ManyToOne(optional = false, cascade = { CascadeType.REFRESH })
private UserClient user;

@Temporal(TemporalType.TIMESTAMP)
private Date accessTs;
}

现在我想运行一个 JPQL查询以获取具有上次访问日期的用户列表。
不幸的是,以下查询不会返回从未访问过系统的用户,即存在于 UserClient 中表,但在 UserAccess 中没有任何记录一。
SELECT ua.user, MAX(ua.accessTs) FROM UserAccess ua RIGHT JOIN ua.user

我错过了什么吗?正确使用 RIGHT JOIN 吗?

我正在使用最新的 Hibernate JPA 版本 (4.0.0.CR1)

最佳答案

您应该制作 UserClient表关系的所有者方面(这在 IMO 中更具逻辑意义)。然后你可以使用 LEFT JOIN而不是 RIGHT JOIN .

SELECT uc, MAX(ua.accessTs) FROM UserClient uc LEFT JOIN uc.userAccess ua

Here's why left join on UserAccess works :

SQL left join visual description

关于jpa - JPQL 中的右连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7210269/

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