14.7. 多态查询
一个如下的查询语句:
from Cat as cat
不仅返回Cat
类的实例, 也同时返回子类 DomesticCat
的实例. Hibernate 可以在from
子句中指定任何 Java 类或接口. 查询会返回继承了该类的所有持久化子类 的实例或返回声明了该接口的所有持久化类的实例。下面的查询语句返回所有的被持久化的对象:
from java.lang.Object o
接口Named
可能被各种各样的持久化类声明:
from Named n, Named m where n.name = m.name
注意,最后的两个查询将需要超过一个的SQL SELECT
.这表明order by
子句 没有对整个结果集进行正确的排序. (这也说明你不能对这样的查询使用Query.scroll()
方法.)