2012-04-18 83 views
16

我開始學習JPA,並已經實現了與JPA查詢爲例,根據我在SQL Server中測試了以下本地SQL:如何創建帶有LEFT OUTER一個JPA查詢JOIN

SELECT f.StudentID, f.Name, f.Age, f.Class1, f.Class2 
FROM Student f 
    LEFT OUTER JOIN ClassTbl s ON s.ClassID = f.Class1 OR s.ClassID = f.Class2 
WHERE s.ClassName = 'abc' 

從上面的SQL我已經構建了以下JPQL查詢:

SELECT f FROM Student f LEFT JOIN f.Class1 s; 

正如你所看到的,我仍然缺乏從我原來的查詢條件OR s.ClassID = f.Class2。我的問題是,我怎樣才能把它放入我的JPQL?

+0

可能的重複[如何使用LEFT OUTER JOIN進行JPA查詢](http://stackoverflow.com/questions/4750371/how-to-make-a-jpa-query-with-left-outer-join ) – Perception 2012-04-18 03:45:58

回答

27

寫下這個;

SELECT f from Student f LEFT JOIN f.classTbls s WHERE s.ClassName = 'abc' 

因爲您的學生實體與ClassTbl實體具有一對多關係。

10

如果你有實體A和B,它們之間沒有關係,有嚴格的0或1和,B中每一個A,你可以這樣做:

select a, (select b from B b where b.joinProperty = a.joinProperty) from A a 

這將爲您提供單個結果的對象[] {a,b}或多個結果的列表<對象[] {a,b} >。

+0

這是唯一可以與不相關實體一起使用的答案 – 11thdimension 2017-11-22 07:11:27