7.6. Polymorphic queries
A query like:
select cat from Cat as cat
returns instances not only of
Cat
, but also of subclasses like DomesticCat
. Hibernate queries may name any Java class or interface in the from
clause (portable EJB-QL queries should only name mapped entities). The query will return instances of all persistent classes that extend that class or implement the interface. The following query would return all persistent objects:
from java.lang.Object o // HQL only
The interface
Named
might be implemented by various persistent classes:
from Named n, Named m where n.name = m.name // HQL only
Note that these last two queries will require more than one SQL
SELECT
. This means that the order by
clause does not correctly order the whole result set. (It also means you can't call these queries using Query.scroll()
.)