java - JPQL 中的 LEFT JOIN ON()

标签 java sql jpa entity jpql

我有两个实体:

  • 用户: id:long, name:String
  • 玩家:id:long,所有者:用户,点数:int

现在我想在一个 JPQL 查询中选择一个用户及其关联的玩家。在 SQL 中,我会这样做:

SELECT u.*, p.* FROM User u
LEFT JOIN Player p ON (p.owner_id = u.id)
WHERE u.name = ...

我的第一直觉是在 JPQL 中这样做

SELECT u, p FROM User u LEFT JOIN Player p ON (p.owner = u) WHERE u.name = ...

但我认为 JPQL 不支持 ON 子句。但是我确实需要它,因为 User 没有对 Player 的引用(Player 以外的许多东西都可以附加到 User)。 我该如何解决这个问题?

最佳答案

你有一个从 PlayerUser 的关系,所以你可以反转连接来跟随它:

SELECT u, p FROM Player p RIGHT JOIN p.owner u WHERE ...

关于java - JPQL 中的 LEFT JOIN ON(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992834/

相关文章:

java - tryLock 方法调用是否进入 try block ?

java - 二叉搜索树插入方法的时间复杂度

java - 需要更好的 Java 应用程序部署策略

从一个窗口切换到另一个窗口时出现 javafx.fxml.LoadException

sql - 如何在sql server 2008中显示数据?

java - Intellij 想法 : JPA annotations in property instead of getter

spring - 如何使用多个数据源设置 spring data jpa

java - 获取 JPA 和 Hibernate 继承树中的鉴别器值列表

c# - SQL DataReader 如何显示查询中的空值

sql - 从多个表中选择 SUM