HQL-запрос для нескольких типов / классов - PullRequest
10 голосов
/ 18 января 2012

У меня сложная иерархия классов с несколькими уровнями наследования, и мне нужно запросить определенные типы в этой иерархии, используя HQL.

Допустим, у меня есть классы Cat, Dog и Monkey с общим базовым классом Animal.

Как мне написать запрос, который выбирает только некоторые из них, скажем, Cat and Dog?

Мне также нужно отсортировать или отфильтровать по определенным свойствам Животных - скажем, животные с Полом = "Самец" и порядком по Имени.

Возможно ли это?

1 Ответ

12 голосов
/ 18 января 2012

Стандартная функция JPQL - TYPE(), которая также поддерживается в Hibernate, как указано в документации .

Пожалуйста, следуйте примеру:

select a from Animal a
where type(a) in ('Cat', 'Dog')
    and a.sex = 'Male'
order by a.name

Hibernate также использует неявное свойство .class:

select a from Animal a
where a.class in ('Cat', 'Dog')
    and a.sex = 'Male'
order by a.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...