Обход ассоциаций внутри критерия гибернации ИЛИ - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть два объекта, которые выглядят примерно так:

public class Foo{
    List<Bar> bars;
    String name;
}

public class Bar {
    String value;
}

Я хотел бы использовать Hibernate Criteria API, чтобы сделать запрос OR, который включает оба свойства Foo. В частности, я хочу выбрать все Foos, которые имеют name "somevalue" ИЛИ имеют Bar в своей коллекции bars, которая имеет value "anothervalue".

Я знаю, как сделать это самостоятельно:

createCriteria(Foo.class).add(Restrictions.eq("name","somevalue"));

and

createCriteria(Foo.class).createCriteria("bars").add(Restrictions.eq("value","anothervalue"));

(взято из здесь )

но когда я пытаюсь поместить их по обе стороны от оператора Restrictions.or (), это дает мне ошибку компиляции. Итак, мой вопрос: возможно ли это с использованием критериев или мне придется использовать HQL или обычный SQL?

1 Ответ

0 голосов
/ 22 февраля 2011

Только с макушки головы, это сработает?

Criteria criteria = session.createCriteria(Foo.class);
criteria.createAlias("bars", "bar");
String value = "somevalue";
criteria.add(Restrictions.or(Restrictions.eq("name", value), Restrictions.eq("bar.name", value)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...