3 Temmuz 2012 Salı

Hibernate'de çoklu kriter oluşturmak (Multiple OR, Hibernate Criteria Expression Or)

http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/querycriteria.html

"Restrictions.or"u çoklu bir şekilde kullanmak istedik, fakat aklımıza gelmedi, derken araştırdım buldum. Yukarıda link'ten ilgili sayfaya gidebilirsiniz.

//Normal Or kullanımı
aşağıdaki sorgu ismi Fritz'le başlayan ve yaşı null olmayan veya 0 olanları listeleyecek.

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "Fritz%") )
    .add( Restrictions.or(
        Restrictions.eq( "age", new Integer(0) ),
        Restrictions.isNull("age")
    ) )
    .list();
 
Çoklu Or kullanımı için ise Restrictions.disjunction() 'ı kullanabilirsiniz.
 
List cats = sess.createCriteria(Cat.class)
      //ismi listenin içinde varolanlar
    .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) ) 
 //ve yaşı null olmayan veya 0 veya 1 veya 3 olanlar
     .add( Restrictions.disjunction()
        .add( Restrictions.isNull("age") )
        .add( Restrictions.eq("age", new Integer(0) ) )
        .add( Restrictions.eq("age", new Integer(1) ) )
        .add( Restrictions.eq("age", new Integer(2) ) )
    ) )
    .list(); 

Hiç yorum yok:

Yorum Gönder