休止状態—メンバーオブジェクトのフィールドに基づいてオブジェクトをロードする
質問
メンバーオブジェクトのフィールド値に基づいてHibernateを介してオブジェクトをロードするにはどうすればよいですか?たとえば、次のクラスが存在し、barとfooが1対1の関係にあるとします。
Foo {
Long id;
}
Bar {
Long id;
Foo aMember;
}
FooというIDしか持っていない場合、Hibernate Criteriaを使用してBarをロードするにはどうすればよいですか?
私の頭に飛び込んだ最初のことは、Fooオブジェクトをロードし、それをCriterionとして設定してBarオブジェクトをロードすることでしたが、それは無駄に思えます。基準でこれを行う効果的な方法はありますか、それともHQLはこれを処理する方法ですか?
解決
これを達成するために、Criteriaを効率的な方法で絶対に使用できます。
session.createCriteria(Bar.class).
createAlias("aMember", "a").
add(Restrictions.eq("a.id", fooId));
トリックを行う必要があります。
他のヒント
基準またはHQLを使用できます。
HQLの例:
Query query = session.createQuery(" from bar as bar where bar.aMember.id =:fooId");
query.setParameter(" fooId&quot ;, fooId);
リストの結果= query.list();
所属していません StackOverflow