Переход в спящий режим — загрузка объекта на основе поля объекта-члена.

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Как объект может быть загружен через 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();

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top