映射NHibernate <any>关联的反面</any>

时间:2010-10-04 15:48:22

标签: nhibernate nhibernate-mapping

Ayende有一个使用<any>映射here的很好的例子,我将其作为我问题的一部分重新发布,因为该博客文章中的评论已经关闭。鉴于他原来的映射:

<class name="Order" table="Orders">

    <id name="Id">
        <generator class="native"/>
    </id>

    <any name="Payment" id-type="System.Int64" meta-type="System.String" cascade="all">
        <meta-value value="CreditCard" class="CreditCardPayment"/>
        <meta-value value="Wire" class="WirePayment"/>
        <column name="PaymentType"/>
        <column name="PaymentId"/>
    </any>

</class>

<class name="CreditCardPayment" table="CreditCardPayments">
    <id name="Id">
        <generator class="native"/>
    </id>
    <property name="IsSuccessful"/>
    <property name="Amount"/>
    <property name="CardNumber"/>
</class>

<class name="WirePayment" table="WirePayments">
    <id name="Id">
        <generator class="native"/>
    </id>
    <property name="IsSuccessful"/>
    <property name="Amount"/>
    <property name="BankAccountNumber"/>
</class>

...我如何在CreditCardPayment和WirePayment类上映射一个名为Order的属性,这可能是该关联的“反面”,允许从这些付款的遍历回到与它们关联的订单?

这里的问题是,CreditCardPayment和WirePayment可能具有相同的ID,因为它们位于不同的表中,所以我需要一些方法告诉NHibernate考虑PaymentType。

1 个答案:

答案 0 :(得分:2)

NHibernate不支持双向异构关联(即<any>)。

我知道这不是你想听到的,但就是这样。

相关问题