2009-07-22 18 views
10

Şöyle hazırda alanı nesneleri Üzerinde isSuperiorEnchantment bayrak takımı olan bir sihir ile. Hayatım boyunca bunu HQL'de ifade etmenin bir yolunu anlayamıyorum.HQL ve bire birçok sorguları

Herhangi bir fikrin var mı? Yukarıdakilerin tümü üzerinde uygun eşleştirmeleri varsayarsak

cevap

17

, aradığınız sorgu:

select p 
from Player as p 
    left join p.inventory as i 
    left join i.enchantments as e 
where e.isSuperiorEnchantment = 1 
+0

sayesinde bu büyük çalıştı. Önüne bir "select p" eklemeyi unutmam gerekiyordu, ama aksi takdirde ihtiyacım olan şey buydu! –

+0

Sadece HQL'yi öğreniyorum, ancak normal SQL'de bu işe yaramaz - sol katılım, Envanter ve Enchantments'ta eşleşen kayıt olmasa bile Oyuncu sonuçları alacağınız anlamına gelir. (Bunu açıklığa kavuşturmaya devam edeceğim ... Şüphem var "sol birleştirme" HQL'de farklı bir şey anlamına gelir veya bu sorgu çok fazla kullanılmaz). –

+1

@RobWhelan Yukarıdaki sorgunun çalışması (tabii ki sözdizimine uygun ayarlamalar ile) normal SQL'de "e.isSuperiorEnchantment = 1" durumu nedeniyle "En iyi durumda olmayan oyuncular için tatmin edilmeyecektir" çünkü "isSuperiorEnchantment" ifadesi, boş. – ChssPly76