2014年9月16日火曜日

Hibernateで関連性のあるエンティティでフィルタをかけたい場合

Hibernateで関連性をもつエンティティ同士があり、関連先のフィールドで検索(フィルタ)をかけたい場合は以下のようにする。

この例ではCat(一)に対してkittens(多)はCatのコレクションであるような1対多の関連の場合、Catを抽出するのに関連先のkittenのフィールドでフィルタをかけた例。createCritearia.add(Restrictions.like)を併用してやる。

http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/querycriteria.html#querycriteria-associations

List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%") )
    .createCriteria("kittens")
        .add( Restrictions.like("name", "F%") )
    .list();

0 件のコメント:

コメントを投稿