休止状態—メンバーオブジェクトのフィールドに基づいてオブジェクトをロードする

StackOverflow https://stackoverflow.com/questions/150902

  •  02-07-2019
  •  | 
  •  

質問

メンバーオブジェクトのフィールド値に基づいて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();

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top