2011-07-20 12 views
0

子要素までナビゲートしてルート/親にバックアップして検索する必要があります。 Criteria APIを使用してこのようなことを行うにはどうすればよいですか?私が持っている例としてHibernate Criteria API

Criteria crit = getSessionFactory().getCurrentSession() 
    .createCriteria(TherapistImpl.class); 

今、私は、ユーザー(アドレスセット)に関連付けられているアドレスを取得するために、Userクラスに移動する必要があります:

crit.createCriteria("user") 
    .createCriteria("addresses") 
    .add(Restrictions.eq("postcode", postCode)); 

しかし、今私はこれをやっている、私は親クラスTherapyImplから他の1対多数の関連を得るためにバックアップする必要があります

crit.createCriteria("therapyProvisions") 
    .add(Restrictions.eq("type", searchByValueSelected)); 

しかし、Hibernateは、これは我々がチェーンと以前に作成したユーザーの基準を参照していると考えています。

私は複数の基準を作成しますか?ツリーなどのバックアップをナビゲートする方法はありますか?

あなたのコメントに感謝 ポール

答えて

1

よりむしろuser関連付けのためにサブCriteriaを作成し、それのためのエイリアスを作成します。

crit.createAlias("user", "userAlias"); 
crit.add(Restrictions.eq("userAlias.addresses.postcode", postCode); 

(あなたがのためにサブエイリアスを作成する必要があるかもしれませんaddresses

その後、therapyProvisionsのために同じことを実行します。

crit.createAlias("therapyProvisions", "therapyProvisionsAlias"); 
crit.add(Restrictions.eq("therapyProvisionsAlias.type", searchByValueSelected); 

これで、内部結合がすべて行われます。