2009-09-24 8 views
7

Bu sınıfın bir varlık olarak eşlendiğini varsayalım, Kişi olarak adlandırın. Kişinin Adrese gömülü/bileşenli bir ilişkisi vardır. Adres nesnelerini döndürecek bir Ölçüt kullanarak sorun yaşıyorum. Bunu denedim:Hazırlanmış Kriterler api kullanarak öykünme veya bileşen alma api

Criteria.createCriteria(Address.class) 

çalışmıyor Hangi. Varlıktan geçmem gerekiyor ama sonra bir çeşit projeksiyona ihtiyacım var.

Criteria.createCriteria(Person.class).<<what goes here???>> 

Öneriler?

cevap

6

Bileşenin kullanım ömrü kendi sahibi tarafından kontrol edilir; Dernekler kabul edilmez. Bu nedenle bileşeni kendi başına bir sorgudan alamazsınız. Bununla birlikte, bunu ölçütlerde kullanabilirsiniz. senin "Adres" sınıfını varsayarsak

"Kişiden" dahilinde "adresi", gibi bir şey yapabileceğini olarak eşleştirilmiş:

Bu seferki almak veya hazırda gömülü nesnenin özelliğini başvurabilir nasıl
Criteria.createCriteria(Person.class) 
.add(Restrictions.eq("address.street", street)); 
+0

Tamam açıklık, ama nasıl bir HQL yapabilirsiniz gelip doğrudan Adres almak? Neden aynı sorgular için geçerli değil? – Konstantin

+0

HQL, Kriter API'sinin sahip olmadığı yeteneklere sahip olduğundan. Artık, Adresinizi tek başına herhangi bir maliyetle iade etmek istiyorsanız, Adrese ait her özelliği (ve başka hiçbir şeyi) içerecek ve bir sonuca "AliasToBeanResultTransformer" parametresini uygulayacak olan Kişi tabanlı kriterler için bir projeksiyon listesi oluşturabilirsiniz. Ama bu baş ağrısı ve bunun için gösterecek hiçbir şey değil; Bunun yerine tam kişi seçerim ve java kodunda (ihtiyacınız olan buysa) Adres çıkarırdım. Ya da HQL ile gidin. – ChssPly76

0

.

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
       Parent.class,"parent"); 
criteria.createAlias("embeddedObjectFieldName", "parent.embeddedObjectFieldName"); 

criteria.setProjection(Projections.projectionList() 
       .add(Projections.groupProperty("parent.propertyOne")) 
       .add(Projections.max("embeddedObjectFieldName.embeddedobjectproperty"))); 

Umut yukarıdaki

İlgili konular