2012-06-09 15 views
15

Kriter API'sında setResultTransformer yönteminin kullanımı nedir? Birisi bunu basit bir örnekle açıklayabilir mi? Javadokları okudum ama onları net olarak anlayamıyorum.setResultTransformer Ölçüt

Selamlar, setProjections (kullanmayan bir ölçüt sorgusu için

cevap

13

varsayılan ResultTransformer) ROOT_ENTITY olacaktır. Biz Bölümüne bir ManyToMany ilişkide Öğrenci varsa

sorgu

Session session = (Session) getEntityManager().getDelegate(); 
    Criteria crit = session.createCriteria(Student.class) 
     .createAlias('departments', 'department'); 

Bu sorgu çiftleri dönecektir ... Bu gibi görünebilir. Ama ResultTransformer ... hazırda sonuçları marshalls zaman

crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); 

Artık sonuçlar farklı olacaktır ayarlayın. (Ya ben unmarshalls demek?)

Bir List<Student> olarak sorgu dönmek için Hazırda ama List<Object[]> Basitçe sonra

crit.setResultTransformer(CriteriaSpecification.PROJECTION) 
+1

Dokümandan ROOT_ALIAS için bu terimi görebiliyorum: Kriterleri sorgusunun "kök" öğesine başvuran diğer ad. Bu durumda "kök" terimi ne anlama geliyor? Kökün bu durumda ne ifade ettiğini anlayamıyorum. Lütfen açıkla. – user182944

+2

"root", Kriterler örneğinizi oluştururken kullandığınız sınıfın kısaltmasıdır. Benim örneğimde kök Öğrenci. Sonuç olarak, crit.list() öğesine bir Öğrenci nesnelerinin listesi olarak bir çağrı gönderilir. PROJECT olarak bir ResultTransformation istemediğiniz sürece, bu durumda bir Object nesnesi listesi olacaktır. (Ayrıca, Restriction'ı kaldırmak için orijinal örneğimi düzenledim, böylece sorgu çiftleri döndürecektir.) – carbontax

7

olarak sonuçlarını işlemek için tercih istemiyorsanız: Eğer ölçütler konut yapıyoruz : örn: Eğer resultset özellikle nesnesine olmak istiyorum hoşuna kullanabilirsiniz

.setResultTransformer(Transformers.aliasToBean(Employee.class)); 

EmployeeResultSet Varlık aynı olmalıdır.

+0

Bu mükemmel çalıştı! – normalUser

+0

Bir çekicilik gibi çalışır. İyi bahşiş. Teşekkürler – niarb

İlgili konular