【问题标题】:Use type of object in HQL where clause在 HQL where 子句中使用对象类型
【发布时间】:2008-12-16 13:27:48
【问题描述】:

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

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

谢谢!

帕斯卡

【问题讨论】:

    标签: nhibernate hibernate hql


    【解决方案1】:

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

    from CommunicationChannelSpecifications spec where spec.class in (?)
    

    【讨论】:

    • 不错的答案,但如果我们想在更新 (hql) 中这样做怎么办。我的意思是更新 Entity where class= com.pa.SubEntity?
    【解决方案2】:

    在这种情况下,NHibernate 支持与 Hibernate 相同的语法。示例见here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多