2

メンバーオブジェクトのフィールド値に基づいて Hibernate 経由でオブジェクトをロードするにはどうすればよいですか? たとえば、次のクラスが存在し、bar と foo の間に 1 対 1 の関係があるとします。

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

Foo の ID しか持っていない場合、どのように Hibernate Criteria を使用して Bar をロードできますか?

最初に頭に浮かんだのは、Foo オブジェクトをロードして、それを Criterion として設定して Bar オブジェクトをロードすることでしたが、それは無駄に思えます。基準でこれを行う効果的な方法はありますか、またはこれを処理する方法は HQL ですか?

4

2 に答える 2

3

これを達成するために、効率的な方法で Criteria を絶対に使用できます。

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

トリックを行う必要があります。

于 2008-09-29T22:15:49.247 に答える
0

CriteriaまたはHQLを使用できます。

HQLの例:

クエリquery=session.createQuery( "from Bar as bar where bar.aMember.id =:fooId");

query.setParameter( "fooId"、fooId);

リスト結果=query.list();

于 2008-09-30T13:00:53.987 に答える