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