java hibernate: выбор столбца-дискриминатора в полиморфном запросе hql

#java #sql #database #hibernate #hql

#java #sql #База данных #гибернация #hql

Вопрос:

В гибернации я хочу выбрать значение дискриминатора. Что-то вроде

select discriminator, id, name, age from Animal

Идея состоит в том, чтобы отправить результат этого запроса на сторону клиента, чтобы я мог отображать другой значок на основе значения столбца-дискриминатора (т. Е. cat, dog, elephant и т.д.).

Возможно ли это? Как?

Ответ №1:

Вы можете сделать это следующим образом:

 select a.class, a.id, a.name, a.age from Animal a
  

Из документации по гибернации:

Специальный класс свойств получает доступ к значению дискриминатора экземпляра в случае полиморфной сохраняемости.

Комментарии:

1. Отлично! Сначала это не сработало, потому что я не определился с a. и написал select class ...

Ответ №2:

Объекты запроса Hibernate не знают столбцов. Итак, если у вас нет свойства с именем discriminator в вашем объекте Animal, вы не можете этого сделать. Вы можете выполнить запрос в sql или получить весь объект, а затем получить унаследованный тип, для этого вы можете использовать «instanceof»