在HQL where子句中使用对象类型

时间:2008-12-16 13:27:48

标签: nhibernate hibernate hql

在我的域模型中,我有一个抽象类CommunicationChannelSpecification,它有子类,如FTPChannelSpecification,EMailChannelSpecification和WebserviceChannelSpecification。现在我想创建一个HQL查询,其中包含一个where子句,它将结果缩小到某些类型的通道规范。例如。 (用简单的英语)选择其类型出现在集合{FTPChannelSpecification,WebserviceChannelSpecification}中的所有CommunicationChannelSpecifications。

如何在HQL中实现这一目标?我正在使用NHibernate 2.0.1和每个子类继承映射策略的表...

谢谢!

帕斯卡

2 个答案:

答案 0 :(得分:8)

在NHibernate中不是正面的,但在Hibernate中,有两个特殊的属性总是引用id和class。所以,对于你的具体情况,我会做

from CommunicationChannelSpecifications spec where spec.class in (?)

答案 1 :(得分:0)

在这种情况下,NHibernate支持与Hibernate相同的语法。有关示例,请参阅here