Переход в спящий режим — загрузка объекта на основе поля объекта-члена.
Вопрос
Как объект может быть загружен через Hibernate на основе значения поля объекта-члена?Например, предположим, что существуют следующие классы с отношением "один к одному" между bar и foo:
Foo {
Long id;
}
Bar {
Long id;
Foo aMember;
}
Как можно было бы использовать критерии гибернации для загрузки Bar, если бы у вас был только идентификатор Foo?
Первое, что пришло мне в голову, было загрузить объект Foo и установить это в качестве критерия для загрузки объекта Bar, но это кажется расточительным.Есть ли эффективный способ сделать это с помощью Критериев, или это HQL - способ, которым это должно быть обработано?
Решение
Вы можете абсолютно эффективно использовать Критерии для достижения этой цели:
session.createCriteria(Bar.class).
createAlias("aMember", "a").
add(Restrictions.eq("a.id", fooId));
это должно сработать.
Другие советы
Вы можете использовать Criterions или HQL.
Пример HQL:
Запрос query = session.CreateQuery("из бара как из бара, где bar.aMember.id = :fooId");
запрос.setParameter("fooId", fooId);
Результат списка = query.list();