2012-07-31 29 views
5

Aynı masaya hql ile sol birleştirme yapmak için bir yol arıyorum.HQL, soldaki tabloya katıl

Bu operatöre beğendikleri görünmüyor benim sorgu

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' 

hazırda var.

cevap

0

Ben bu örnekte bakılırsa kullanımı hazırda yok ama:

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

Bu sayfadan: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-joins-forms

görünüyor sadece bir ON yapmıyorsun? Yanılıyorsam, haberim olsun.

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

seçeneğini kaldırmak benim hata ancak hata o cevabımı düzenlemek için gidiyorum aynı –

+0

bu. Hazırda beklemiyorum ama sözdizimine bakıyorum. – Aushin

+0

@roberttrudel Bu yardımcı olursa bana bildirin. HQL'yi hiç kullanmadım bu yüzden belgelerden tahmin etmeye çalışıyorum. – Aushin

4

HQL'deki sol birleşimler yalnızca iki varlık arasında bir ilişkiniz varsa mümkündür. Sorgunuz, birleştirilmiş öğenin null olmadığına dayandığından, bir iç birleşim aynı şeyi yapar. Birleştirme sözdizimi ile bir iç birleştirme, yalnızca iki varlık arasında bir ilişkiniz varsa mümkündür. Ama sadece burada yan tümcesinde bir eşitlik testi ekleyerek yapabilirsiniz:

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

İç birleşim sözdizimi ile, 've e.code null' satırı gereksizdir. –