2012-05-02 10 views
0

HibernateのJoinにどのようにフィルタを追加できますか?私は3人の子供を持つエンティティの親を持っており、これらの子供のエンティティのいくつかのフィールドでデータをフィルタリングしたいと思います。それはHibernate Joinのフィルタ

sessionFactory.getCurrentSession().createCriteria(Cartel.class).add(create(instance)).list(); 
私は私がすることによってフィルタリングするフィールドを設定した場合、これらのフィールドによってフィルタJOINを建設する、自動的に休止状態を想定

を通じて私のDAOで作成しています登録しようが、それはすべての結果にのみ構築された(select文を返します。 where句に1 = 1を持つ)。

+0

カルテルクラスや使用する他のクラスに関する情報を十分に投稿して、入手したい選択(フィルタ付き)の例を挙げれば十分な情報を提供することができます君は。 –

答えて

0

私はで解決:

criteria.add(Restrictions.eq("xxx",Object); 

感謝。 よろしくお願いします。

0

残念ながら、HQLでは、あなたが暗示しているような結合のためにON句の概念を許可していません。

あなたはしかし、生のSQLを記述し、もちろん(データベースがそれをサポートしていると仮定して) ON句を指定することができ、任意のSQLを実行するために createSQLQuery()を使用することができます

+0

しかし、ステートメントは、各子エンティティでJOINを持つように正しく形成されます。問題は、これらの子エンティティに設定されたデータのwhere句にフィルタを追加できないことです。 – user1260893

+0

ただHQlを使ってください: 'parent.child.name = 'fred''など – Bohemian

+0

私はHQLを持っていません.HBMと条件で自動的に構築されます。 – user1260893