2009-07-07 3 views
5

ı (Hazırda) bu varlığı var diyelim:Hazırda Bekletme: Bir CollectionOfElements öğesinde belirtilen bir öğe içeren sorgu varlıkları?

@Entity 
public class Person { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 

    @CollectionOfElements 
    @IndexColumn("phones_index") 
    Set<String> phones; 
} 

Örneğin, ben onların telefonlar "555-1234" içeren nerede Kişinin örneklerini almak istiyorum. Bu konuda nasıl bir sorgu yapabilirim? Ben benzer bir şey arıyorum: Önce bir argüman olarak bir özellik adını alır hazırda bekletme en Restrictions.in() yöntemi, istediğini düşünüyorum

session.createCriteria(Person.class)./*something*/.add(Restrictions./*something*/"555-1234").list(); 

cevap

9

Merhaba yapabilirsiniz deneyin bu bir

String phone = "555-1234"; 
Person person= (Person) session.createQuery("from Person p join p.phones pl where pl = :phone").setString("phone", phone).uniqueResult(); 
-1

, ikincisi gibi nesnelerin bir dizi veya Koleksiyon ya.

Ayrıca bakınız: The Javadoc

Düzenleme: Upon yeniden okuma soru, sana özellikle, ilgili Restrictions yöntemlerden birini kullanabilirsiniz düşünüyorum eq:

session.createCriteria(Person.class).add(Restrictions.eq("phones", "555-1234")).list(); 
+0

Bunu herkes test etti? – whiskeysierra

+0

@Willi: Benim için çalışmaz, kabul edilen cevap yine de geçerli. Ayrıca, bu hazırda bekletilen hata izleme sisteminde açık bir sorun var: http://opensource.atlassian.com/projects/hibernate/browse/HHH-869 –

+0

Çalışmıyor, bkz http://opensource.atlassian.com/ projeler/hazırda bekletme/göz/HHH-869 –

İlgili konular