仅获取nHibernate中的基类型对象

仅获取nHibernate中的基类型对象,nhibernate,Nhibernate,我目前正试图解决一个问题。我有一个类表继承,也就是table er子类(一个主表+几个其他的附加数据)。在我的应用程序中,基本对象实例和扩展对象都可以存在。现在,我希望能够有时只获取那些基本对象,有时同时获取这两种类型的对象。一个简单的示例(两个类都映射了它们的所有属性) 现在运行hql查询“from Base”将同时获取Base和Extedned对象。有没有办法将这种行为限制为只获取基本对象?这是上面示例的映射(如果有任何错误,请原谅,这一定是由于输入错误导致示例运行) 基本id顺序 使用H

我目前正试图解决一个问题。我有一个类表继承,也就是table er子类(一个主表+几个其他的附加数据)。在我的应用程序中,基本对象实例和扩展对象都可以存在。现在,我希望能够有时只获取那些基本对象,有时同时获取这两种类型的对象。一个简单的示例(两个类都映射了它们的所有属性)


现在运行hql查询“from Base”将同时获取Base和Extedned对象。有没有办法将这种行为限制为只获取基本对象?

这是上面示例的映射(如果有任何错误,请原谅,这一定是由于输入错误导致示例运行)


基本id顺序

使用HQL,您应该能够使用“类”特殊属性:

from Base b where b.class=Base
另一种方法是使用普通SQL,在这里您可以更好地控制检索的内容


无论如何,请检查(N)Hibernate文档。

您能发布这两个类的映射吗?实际上我正在通过ActiveRecord使用NHibernate,但它可能会有帮助:[ActiveRecord,JoinedBase]公共类基类{[PrimaryKey]公共int ID{get;set;}[Property]公共字符串某物{get set;}[ActiveRecord]公共扩展:Base{[JoinedKey]公共bool NewProp{get;set;}不幸的是,我收到消息:NHibernate.QueryException:无法解析属性:class of::/它现在正在工作。但最终我找到了答案,为什么它不工作。基和扩展在不同的程序集中。我注册了基,但忘记了扩展-当基类没有子类时-它没有“class”属性。
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping auto-import="true"
                   default-lazy="false"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns="urn:nhibernate-mapping-2.2">
  <class name="Base, Test"
         table="base">
    <id name="ID"
        access="property"
        column="ID"
        type="Int64"
        unsaved-value="0">
      <generator class="sequence">
        <param name="sequence">base_id_seq</param>
      </generator>
    </id>
    <property name="Something"
              access="property"
              type="String">
      <column name="somethin"/>
      <joined-subclass name="Extended, Test"
                       table="extended"
                       schema="extended">
        <key column="id" />
        <property name="NewProp"
                  access="property"
                  type="Boolean">
          <column name="newProp"/>
        </property>
      </joined-subclass>
    </class>
</hibernate-mapping>
from Base b where b.class=Base