私は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_PAYMENT
のCHEQUE_PAYMENT
ESjoined-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
ない場合は、おそらく理解できると思います。