在JPQL中LEFT JOIN ON()

时间:2011-02-14 13:42:01

标签: java sql jpa entity jpql

我有两个实体:

  • User:id: long ,name: String
  • Player:id: long ,所有者:用户,指向: int

现在我想在一个JPQL查询中选择一个用户及其关联的Player。在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没有引用PlayerPlayer以外的许多内容可以附加到User)。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的关系从PlayerUser,因此您可以将联接转换为跟随它:

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