Критерии: поиск двух разных классов сущностей - PullRequest
1 голос
/ 25 мая 2010

У меня есть SuperEntity "супер сущности" и три сущности ChildEntity1, ..., ChildEntity3, которые расширяют суперкласс.

Легко найти все объекты в базе данных, т. Е. Мы могли бы использовать

session.createCriteria(SuperEntity.class);

Также нет проблем с поиском одного конкретного типа сущности, просто замените SuperEntity любым из дочерних элементов, чтобы найти сущности этого типа.

Но у меня есть проблема при разрешении «множественного выбора» для типов. То есть может потребоваться поиск всех объектов типа 1 и 2, но не типа 3.

Первая идея состояла в том, чтобы создать два независимых запроса и объединить результаты в окончательный список - но это разрушило бы подкачку, которая использует смещение и ограничивает функциональность базы данных ...

Есть ли в Criteria возможность объединить два разных запроса в один список результатов?

С уважением,

RoCMe

Ответы [ 2 ]

0 голосов
/ 25 мая 2010

Один из способов сделать это - создать представление базы данных, объединяющее результаты двух таблиц, а затем класс модели для представления и использовать в этом спящий режим. Таким образом, у вас может быть подкачка страниц, поскольку представление будет действовать как таблица в этом отношении, и вы можете сортировать и ограничивать объединенные результаты.

0 голосов
/ 25 мая 2010

В HQL это может выглядеть так (не уверен, работает ли он во всех случаях):

from SuperEntity e where e.class in [ChildEntity1, ChildEntity2]

В Criteria API вы можете просто использовать IN resitriction .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...