2010-05-25 4 views
1

У меня есть супер сущность Super Entity и три сущности ChildEntity1, ..., ChildEntity3, которая расширяет суперкласс.Критерии: поиск двух разных классов сущностей

Это легко искать для всех объектов в базе данных, то есть мы могли бы использовать

session.createCriteria(SuperEntity.class); 

Это не проблема для поиска одного конкретного типа сущности, тоже, просто заменить SuperEntity с любым из детей смотреть для объектов этого типа.

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

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

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

С наилучшими пожеланиями,

RoCMe

ответ

0

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

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

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

+0

Способ, которым я читаю API, также предполагает, что API-интерфейс Critics не подходит для этого. HQL API, как показано здесь, более гибкий для такого рода запросов. – extraneon

0

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

Смежные вопросы