在我的域模型中,我有一个抽象类CommunicationChannelSpecification,它有子类,如FTPChannelSpecification,EMailChannelSpecification和WebserviceChannelSpecification。现在我想创建一个HQL查询,其中包含一个where子句,它将结果缩小到某些类型的通道规范。例如。 (用简单的英语)选择其类型出现在集合{FTPChannelSpecification,WebserviceChannelSpecification}中的所有CommunicationChannelSpecifications。
如何在HQL中实现这一目标?我正在使用NHibernate 2.0.1和每个子类继承映射策略的表...
谢谢!
帕斯卡
答案 0 :(得分:8)
在NHibernate中不是正面的,但在Hibernate中,有两个特殊的属性总是引用id和class。所以,对于你的具体情况,我会做
from CommunicationChannelSpecifications spec where spec.class in (?)
答案 1 :(得分:0)
在这种情况下,NHibernate支持与Hibernate相同的语法。有关示例,请参阅here。