NHibernate中的继承与关联

时间:2009-08-30 23:27:00

标签: nhibernate inheritance associations

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

有关更多信息,请参阅以下系统的基本概要:

Transport是基类,与Owner有关联。 自行车和汽车是两个子类。

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

这就是我的映射应该如何工作,我是否正确?我没有看到任何解决这个问题的事情所以我认为这对SO来说是个好问题。

<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>

1 个答案:

答案 0 :(得分:0)

我只使用了hibernate for Java,所以某些特定的东西可能不适用于你的情况...但我认为它会非常类似。

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

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