2012-01-04 10 views
51

に参加:Hibernateの基準は、次の取得する私はHibernateの基準を探しています3、表

Dokument.class がRole.class

roleId役割 にマッピングされているContactPerson contactId

を持っています

Contact.class 名前 姓

私はFirstまたはLaを検索したいContactクラスのstNameを呼び出し、接続されているDokumentsのリストを取得します。

私はこのような何かを試してみました:

私はクラスの「DOKUMENT」DOKUMENTにしていないでの検索に参加する理由

誰かが説明することができますをプロパティ「姓」を解決できませんでしたエラーが発生します

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

すべての結合テーブル?すべての助けを前もってありがとう!

答えて

103

フェッチモードでは、関連付けをフェッチする必要があります。関連するエンティティに制限を追加する場合は、エイリアスまたはサブ基準を作成する必要があります。私は一般的にエイリアスを使用して好むが、メーリングリストへは:

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(); 

これはもちろん良くHibernate reference manualで説明されており、javadoc for Criteriaにも例があります。ドキュメントを読む:有用な情報がたくさんある。

+3

JBありがとうございます。うん、私は仕様を読んだが、Hibernateの新生児にとっては、すべてのHibernate用語の周りに頭を包むのはかなり難しい。再度ありがとうございます:-) – mahatmanich

+0

btw関連はありますか、ちょっと参考になれますか? – mahatmanich

+0

アソシエーションは、エンティティがOneToOne、OneToMany、ManyToOneまたはManyToMany ...アソシエーションを持つ別のエンティティにリンクされている場合です。 –

関連する問題