2011-02-14 93 views
6

我有兩個實體:LEFT JOIN ON()在JPQL

  • User:ID:,名稱:字符串
  • Player:ID:,所有者:用戶 ,分:int

N我想在一個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 = ... 

但我不認爲ON子句中JPQL支持。不過,我確實需要它,因爲User沒有提及PlayerPlayer以外的許多東西都可以附加到User)。 我該如何解決這個問題?

回答

3

你必須從PlayerUser的關係,這樣你就可以反轉加入遵循它:

SELECT u, p FROM Player p RIGHT JOIN p.owner u WHERE ... 
當你想加入共同領域無關的實體
+0

沒用答案 – Enerccio 2016-09-06 11:04:10