Hibernate HQL带接口

ben*_*rre 3 java orm entity hibernate hql

根据Hibernate文档的这一部分,我应该能够在HQL中查询任何java类

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-polymorphism

不幸的是,当我运行此查询...

"from Transaction trans where trans.envelopeId=:envelopeId"
Run Code Online (Sandbox Code Playgroud)

我收到消息"事务未映射[来自Transaction trans where trans.envelopeId =:envelopeId]".

Transaction是一个接口,我必须实现它的实体类,我希望在HQL查询中返回一个类型为Transaction的Collection.

Pas*_*ent 11

确实,根据关于多态查询的Hibernate文档:

Hibernate查询可以命名from子句中的任何Java类或接口.该查询将返回扩展该类或实现该接口的所有持久化类的实例.以下查询将返回所有持久对象:

from java.lang.Object o
Run Code Online (Sandbox Code Playgroud)

Named接口可能由各种持久化类实现:

from Named n, Named m where n.name = m.name
Run Code Online (Sandbox Code Playgroud)

但由于接口未映射(因而未知),因此需要在HQL查询中使用完全限定名称:

from qualified.name.Transaction trans where trans.envelopeId=:envelopeId
Run Code Online (Sandbox Code Playgroud)

返回实现您的Transaction接口的所有持久化类的实例.