一尘不染

如何在Hibernate中执行非多态HQL查询?

hibernate

我正在使用Hibernate 3.1.1,尤其是我正在使用HQL查询。

根据文档,Hibernate的查询是多态的:

像:这样的查询from Cat as cat不仅返回的实例Cat,还返回像的子类的实例DomesticCat

如何查询Cat的实例,但不查询其任何子类的实例?

我希望能够做到而不必明确提及每个子类。

我知道以下选项,但并不令人满意:

  1. 查询后手动过滤实例,或者:
  2. 在鉴别符列上手动添加WHERE子句。

Hibernate允许用户决定查询是否应该是多态的是很有意义的,但是我找不到这样的选项。

提前致谢!


阅读 261

收藏
2020-06-20

共1个答案

一尘不染

使用polymorphism="explicit"类映射。这将导致查询仅返回命名类的实例,而不返回其子类。

隐式多态性意味着该类的实例将由命名任何超类或已实现的接口或类的查询返回,并且该类的任何子类的实例将由命名该类本身的查询返回。显式多态性意味着类实例将仅由显式命名该类的查询返回。

2020-06-20