2012-09-26 116 views
0

我有一個帶有名稱字段的ClassRoom類和一個帶有ClassRoom字段的Student類。並非所有的學生都有教室。 我想要列出所有學生的教室名稱(如果沒有教室,則爲空字符串)。使用此JPQL查詢:JPA 2.0 LEFT JOIN引發INNER JOIN

Select s.name, s.classRoom.name from Student s LEFT JOIN s.classRoom 

問題是,這隻會返回學生與教室。正確生成的SQL應該是

Select s.name, c.name from student s left join classroom c on c.id=s.classroomid 

其中返回所有學生,但s.classRoom.name結構似乎強制生成的SQL中的內部聯接。

+1

我們可以看到您的代碼/註釋等嗎? –

回答

0

使用像s.classRoom.name這樣的鏈接表達式會生成一個內部聯接。您需要爲左側加入的實體分配別名並使用該別名:

select s.name, c.name from Student s left join s.classRoom c