2010-11-17 25 views
6

nasıl hazırda Kriterleri ile böyle bir sorgu oluşturmak için bilemiyorum bunu yapmak nasıl bir fikrin var mıhazırda Kriterleri Sorgu - İç içe koşul

select * from x where x.a = 'abc' and (x.b = 'def' or x.b = 'ghi') 

synthax?
Hazırda Kısıtlama statik yöntemleri kullanarak ama ben iç içe 'veya' koşulunu

cevap

13

Belirli sorgu olabilir:

crit.add(Restrictions.eq("a", "abc")); 
crit.add(Restrictions.in("b", new String[] { "def", "ghi" }); 

genel olarak velerin ve OR hakkında merak ediyorsanız, bunu:

where x.a = 'abc' and (x.b = 'a' or x.b = 'b' or x.b = 'c') 
:

// Use disjunction() or conjunction() if you need more than 2 expressions 
Disjunction aOrBOrC = Restrictions.disjunction(); // A or B or C 
aOrBOrC.add(Restrictions.eq("b", "a")); 
aOrBOrC.add(Restrictions.eq("b", "b")); 
aOrBOrC.add(Restrictions.eq("b", "c")); 

// Use Restrictions.and()/or() if you only have 2 expressions 
crit.add(Restrictions.and(Restrictions.eq("a", "abc"), aOrBOrC)); 

Bu eşit olacaktır

+0

çok yardımcı teşekkürler – mickthompson

1

kullanın daha (x.b IN ('def', 'ghi')) gibi bir söz dizimi belirtmek anlamıyorum.

İlgili konular