2012-01-04 13 views
51

ile Üyelik:hazırda Kriterleri aşağıdaki almak için bir hazırda kriterlerine arıyorum 3 Tablolar

Dokument.class Role.class

RolNo Role eşleştirilmiş bir ContactPerson kişi kimliği

sahiptir

Contact.class İlk Ad LastName

First or La stname Contact sınıfında ve bağlı Dokümanların bir listesini alın.

Böyle bir şey denedim:

derse "Dokument" Dokument üzerinde değil, aramaları katılmak neden

birisi açıklayabilir özelliği "Soyad" çözemedi bir hata alıyorum

session.createCriteria(Dokument.class) 
.setFetchMode("role",FetchMode.JOIN) 
.setFetchMode("contact",FetchMode.JOIN) 
.add(Restrictions.eq("LastName","Test")).list(); 

tüm katılan tablolar? Tüm yardım için şimdiden teşekkür ederiz!

cevap

103

Getirme modu yalnızca ilişkilendirmenin getirilmesi gerektiğini söylüyor. İlişkilendirilmiş bir varlık üzerinde kısıtlamalar eklemek istiyorsanız, bir takma ad veya alt kriter oluşturmanız gerekir. Genellikle adlar kullanmayı tercih, ymmv:

Criteria c = session.createCriteria(Dokument.class, "dokument"); 
c.createAlias("dokument.role", "role"); // inner join by default 
c.createAlias("role.contact", "contact"); 
c.add(Restrictions.eq("contact.lastName", "Test")); 
return c.list(); 

Bu elbette iyi Hibernate reference manual açıklanmıştır ve javadoc for Criteria hatta örnekler vardır. Belgeleri okuyun: Çok sayıda yararlı bilgiye sahiptir.

+3

JB çok teşekkürler. Evet, özellikleri okudum, ama bir Hibernate newbee için başını tüm Hibernate lingo etrafında sarmak oldukça zordur. Tekrar THANKS IT çalışır :-) – mahatmanich

+0

btw bir dernek, sadece bir referans nedir? – mahatmanich

+0

Bir kuruluş, OneToOne, OneToMany, ManyToOne veya ManyToMany ... ilişkilendirmesiyle başka bir varlığa bağlandığında bir kuruluştur. –