0

私は2つのテーブルを持っています:

PAYMENT
------------------------------
OrderId             INT    PK
PaymentId           INT    PK
Amount              FLOAT
ChildPaymentRowNum  INT

CARD_PAYMENT
------------------------------
OrderId             INT    PK
PaymentRowNum       INT    PK
CardType            STRING

CHEQUE_PAYMENT
------------------------------
OrderId             INT    PK
PaymentRowNum       INT    PK
CheckNumber         INT

いいえ、この DB は私が作成したものではありません。変更することはできません。私はマッピングしたいとCARD_PAYMENTCHEQUE_PAYMENTESjoined-subclassとしてPAYMENT。このモデルと私が見つけた例との違いは、複合キーを使用しており、外部テーブルの列名の 1 つが一致していないことです。

複合キーでなければ、これができると思います:

<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
    <key column="PaymentRowNum" foreign-key="ChildPaymentRowNum">
</joined-subclass>

そして、名前が複合キーで一致した場合、私はこれを行うことができます:

<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
    <key>
        <column="OrderId">
        <column="PaymentRowNum">
    </key>
</joined-subclass>

しかし、私はこのようなことをしたいと思っていますが、それは違法であると確信しています:

<!-- NO GOOD -->
<joined-subclass name="CardPayment" table="CARD_PAYMENT" extends="Payment">
    <key>
        <column="OrderId" foreign-key="OrderId">
        <column="PaymentRowNum" foreign-key="ChildPaymentRowNum">
    </key>
</joined-subclass>

それで、どうすればこのようなことをするでしょうか?

ボーナス ポイント:でそれを行う方法を教えていただければ、そうでNHibernate.Mapping.Attributesない場合は、おそらく理解できると思います。

4

1 に答える 1