2012-04-18 7 views
16

私はJPAを学ぶために始めています、と私はSQL Serverでテストされ、次のネイティブSQLに基づいて、JPAのクエリで例を実装している結合する方法:LEFT OUTERとJPAクエリを作成

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' 

から

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

あなたが見ることができるように、私はまだ私の元のクエリから条件OR s.ClassID = f.Class2が不足している:私は、次のJPQLクエリを構築した上でSQL。私の質問は、どうやってJPQLに入れるのですか?

+0

[LEFT OUTER JOINでJPAクエリを作成する方法](http://stackoverflow.com/questions/4750371/how-to-make-a-jpa-query-with-left-outer-join ) – Perception

答えて

27

これを書いてください。

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

生徒エンティティにはClassTblエンティティとの1対多の関係があるためです。

10

あなたがそれらの間の任意の関係なしに、エンティティAとBがあり、各Aは0または1 Bが厳密に存在する場合は、あなたができる:

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

これにより、複数の結果に対して単一の結果またはリスト<オブジェクト[] {a、b} >のObject [] {a、b}が得られます。

+0

これは無関係のエンティティで動作する唯一の回答です – 11thdimension

関連する問題