Запрос HQL для нескольких типов/классов
У меня сложная иерархия классов с несколькими уровнями наследования, и мне нужно запросить определенные типы в этой иерархии, используя HQL.
Скажем, у меня есть классы Cat, Dog и Monkey, с общим Animal основного класса.
Как написать запрос, который выбирает только некоторые из них, допустим, Cat и Dog?
Мне также нужно сортировать или фильтровать определенные свойства животных - так скажем, животные с Sex = "Мужчина" и порядок по имени.
Возможно ли это?
Ответы
Ответ 1
Стандартная функция 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