2012-07-31 109 views
5

我搜索一種方式來做與hql相同的表的左連接。HQL,左連接在同一張表

這是我的查詢

FROM Tvshow e 
    LEFT JOIN Tvshow e1 ON e1.num = e.num 
WHERE e1.code = '024' 
    AND e.code is not null 
    AND e.code != '024' 

休眠似乎並不喜歡的運營商。

回答

0

我不使用休眠,但是通過這個例子來看:

from Cat as cat 
inner join cat.mate as mate 
left outer join cat.kittens as kitten 

從這個頁面:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins-forms

它看起來像你乾脆不要做一個ON?如果我錯了,請告訴我,我會解決這個問題。

FROM Tvshow e 
    LEFT JOIN Tvshow e1 
WHERE e1.code = '024' 
    AND e.code is not null 
    AND e.code != '024' 
+0

刪除選擇,我的錯誤,但錯誤是相同 – 2012-07-31 13:48:40

+0

我要修改我的回答。我不使用休眠,但我正在查看語法。 – Aushin 2012-07-31 13:51:03

+0

@roberttrudel讓我知道,如果這有幫助。我從來沒有使用HQL,所以我試圖從文檔中猜測。 – Aushin 2012-07-31 13:54:32

4

只有在兩個實體之間存在關聯時,HQL中的左連接纔有可能。由於您的查詢將聯接的實體強制爲非空,所以內部聯接會執行相同的操作。只有在兩個實體之間存在關聯的情況下,也可以使用連接語法進行內部連接。但是你可以通過簡單地在where子句中增加一個平等的測試做到這一點:

select e from Tvshow e, Tvshow e1 
where e.num = e1.num 
and e1.code = '024' 
and e.code is not null 
and e.code != '024' 
+0

使用內部連接語法,行'和e.code不爲空'是不必要的。 – 2016-03-09 03:03:26