在JPQL中LEFT JOIN ON()

Bar*_*lom 6 java sql entity jpa jpql

我有两个实体:

  • User:id:long,name:String
  • Player:id:long,owner:User,points:int

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

SELECT u.*, p.* FROM User u
LEFT JOIN Player p ON (p.owner_id = u.id)
WHERE u.name = ...
Run Code Online (Sandbox Code Playgroud)

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

SELECT u, p FROM User u LEFT JOIN Player p ON (p.owner = u) WHERE u.name = ...
Run Code Online (Sandbox Code Playgroud)

但我不认为ONJPQL支持该子句.但是我确实需要它,因为User没有引用Player(除了Player可以附加到a 之外的许多东西User).我怎么解决这个?

axt*_*avt 3

Player您有 from到 的关系User,因此您可以反转连接以遵循它:

SELECT u, p FROM Player p RIGHT JOIN p.owner u WHERE ...
Run Code Online (Sandbox Code Playgroud)