2009-08-30 61 views
0

我有一个实体模型,其中继承结构中的基类与另一个类有关联,并且想知道基类的子类型是否也将关联映射了?继承和NHibernate中的关联

对于位的更多信息,这里是系统的这部分的基本轮廓:

交通运输是基类,与业主的关联。自行车和汽车是两个亚类。

它们使用Table Per Subclass继承结构在3个表中使用相同名称表示。 Transport表保存对Owner的外键引用。

这就是我这种映射应该如何工作,我正确吗?我没有看到任何解决这个问题,所以我认为这将是一个很好的问题。

<class name="Transport" table="TRANSPORT"> 
    <id name="Id" type="Int64" column="Transport_ID"> 
     <generator class="native"/> 
    </id> 

    <many-to-one name="Owner" column="Owner_ID" /> 

    <joined-subclass name="Bike" table="BIKE"> 
     <key column="Bike_ID"/> 
    </joined-subclass> 
    <joined-subclass name="Car" table="CAR"> 
     <key column="Car_ID"/> 
    </joined-subclass> 
</class> 

回答

0

我只用于Java的休眠,所以一些具体的事情可能并不适用于你的情况......但我认为这将是非常simmilar。

来自超类的所有映射属性(包括关联)都可以在祖先中访问。请注意,您可以拥有未在XML中映射的超类或注释 - 来自这些超类的属性根本不存储在数据库中。

有一个问题,你可能遇到共享查询(即传输类型的查询)与延迟加载相结合,在某些情况下,hibernate创建代理专用于超类型,你不能用来访问祖先的任何属性。否则,一切都应该像你期望的那样工作。