2008-12-16 36 views
4

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

HQL如何实现?我使用NHibernate 2.0.1和每个子类继承映射策略的表...

谢谢!

帕斯卡尔

回答

8

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

from CommunicationChannelSpecifications spec where spec.class in (?) 
+1

很好的答案,但如果我们想在更新(hql)中做到这一点。我的意思是更新实体在哪里class = com.pa.SubEntity? – ssedano 2010-11-17 11:41:09

0

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

相关问题