Hibernate загружает объект на основе поля объекта-члена

Как можно загрузить объект через Hibernate на основе значения поля объекта-члена? Например, предположим, что существуют следующие классы с однозначной связью между bar и foo:

Foo {
    Long id;
}

Bar {
    Long id;
    Foo aMember;
}

Как можно использовать Hibernate Criteria для загрузки Bar, если у вас есть только идентификатор Foo?

Первое, что пришло мне в голову, это загрузить объект Foo и установить его в качестве критерия для загрузки объекта Bar, но это кажется расточительным. Есть ли эффективный способ сделать это с помощью Criteria или это HQL?


person Community    schedule 29.09.2008    source источник


Ответы (2)


Вы можете абсолютно эффективно использовать Criteria для достижения этой цели:

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

должен сделать трюк.

person laz    schedule 29.09.2008
comment
Для дальнейшего чтения посетите tutorialspoint.com/hibernate/hibernate_criteria_queries.htm. - person Decoded; 05.06.2016

Вы можете использовать критерии или HQL.

HQL-пример:

Query query = session.createQuery("из панели как панели, где bar.aMember.id = :fooId");

query.setParameter("fooId", fooId);

Результат списка = query.list();

person kpirkkal    schedule 30.09.2008