При чтении Hibernate в действии (Кристина Бауэр & Gavin King) я наткнулся на следующую секцию в chapter7Hibernate Полиморфные запросы
7.2.3 полиморфных запросов мы описали HQL как объектно-ориентированный язык запросов, поэтому он должен поддерживают полиморфные запросы, то есть запросы для экземпляров класса и всех экземпляров его подклассов, соответственно. Вы уже знаете достаточно HQL, что мы можем это продемонстрировать. Рассмотрим следующий запрос:
от BillingDetails
Этот запрос возвращает объекты из BillingDetails типа, который является абстрактным классом. Итак, в этом случае конкретные объекты относятся к подтипам BillingDetails: CreditCard и BankAccount. Если мы хотим экземпляров конкретного подкласса, мы можем использовать
из Creditcard
Класс назван в ЕКЕ не должен быть отображен персистентным классом; любой класс будет делать. Следующий запрос возвращает все постоянные объекты:
из java.lang.Object
Конечно, это также работает для интерфейсов, этот запрос возвращает все сериализуемые постоянные объекты:
из java.io.Serializable
Критерии запросов также поддерживают полиморфизм:
session.createCriteria (BillingDetails.class) .list();
Этот запрос возвращает экземпляры BillingDetails и его подклассов. Аналогично, следующий запрос критериев возвращает все постоянные объекты:
session.createCriteria (java.lang.Object.class) .list();
Полиморфизм применяется не только к классам, явно указанным в предложении from, но также к полиморфным ассоциациям, как вы увидите ниже.
Вопрос: Каково использование полиморфных запросов. Как и когда он используется.
Разве это не очевидно из того, что вы опубликовали? Предположим, что вам нужны все платежные данные, независимо от их типа (кредитная карта или банковский счет): вам не нужно выставлять один w-запрос для каждого конкретного подкласса: достаточно одного запроса, который выбирает BillingDetails. –