2008-09-29 14 views
2

メンバオブジェクトのフィールド値に基づいてHibernate経由でオブジェクトをロードするにはどうすればよいですか?たとえば、以下のクラスは、バーとfooの間の1対1の関係で、存在していたとします。あなただけのFooのIDを持っていた場合Hibernate - メンバオブジェクトのフィールドに基づいてオブジェクトをロードする

Foo { 
    Long id; 
} 

Bar { 
    Long id; 
    Foo aMember; 
} 

どのようにしてバーをロードするために、Hibernateの基準を使用することができますか?

私の頭に飛びついた最初のことは、Fooオブジェクトをロードし、それをCriterionとして設定してBarオブジェクトをロードすることでしたが、それは無駄に思えます。 Criteriaを使ってこれを行う効果的な方法があるのですか、これを処理する方法はHQLですか?

答えて

3

あなたは絶対にこれを達成するために効率的な方法で基準を使用することができます。

session.createCriteria(Bar.class). 
     createAlias("aMember", "a"). 
     add(Restrictions.eq("a.id", fooId)); 

は、トリックを行うべきです。

+0

詳細については、http://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htmを参照してください。 – Decoded

0

基準またはHQLを使用できます。

HQLの例:

クエリのクエリ= session.createQuery( "バーからバーなどbar.aMember.idは=:fooId");

query.setParameter( "fooId"、fooId);

リストresult = query.list();

関連する問題