Отображение оборотной стороны ассоциации NHibernate <any> - PullRequest
0 голосов
/ 04 октября 2010

У Ayende есть отличный пример использования <any> mapping здесь , который я репостирую как часть моего вопроса, так как комментарии к этому сообщению в блоге закрыты.Учитывая его оригинальное сопоставление:

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

... как бы я мог сопоставить свойство с именем Order в классах CreditCardPayment и WirePayment, которое было бы «оборотной стороной» ассоциации, позволяющей обойти эти платежи обратнодо ордера, с которым они связаны?

Я понял здесь, что у CreditCardPayment и WirePayment могут потенциально быть одинаковые идентификаторы, поскольку они находятся в разных таблицах, поэтому мне нужно как-то сказать NHibernate, чтобы он использовал PaymentTypeво внимание.

1 Ответ

2 голосов
/ 05 октября 2010

Двунаправленные гетерогенные ассоциации (т.е. <any>) не поддерживаются NHibernate.

Я знаю, что это не то, что вы хотели услышать, но это все.

...