ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 9.1.7\. 隐式多态和其他继承映射混合使用 对这一映射还有一点需要注意。因为每个子类都在各自独立的元素`&lt;class&gt;` 中映射(并且`Payment`只是一个接口),每个子类可以很容易的成为另一 个继承体系中的一部分!(你仍然可以对接口`Payment`使用多态查询。) ``` <class name="CreditCardPayment" table="CREDIT_PAYMENT"> <id name="id" type="long" column="CREDIT_PAYMENT_ID"> <generator class="native"/> </id> <discriminator column="CREDIT_CARD" type="string"/> <property name="amount" column="CREDIT_AMOUNT"/> ... <subclass name="MasterCardPayment" discriminator-value="MDC"/> <subclass name="VisaPayment" discriminator-value="VISA"/> </class> <class name="NonelectronicTransaction" table="NONELECTRONIC_TXN"> <id name="id" type="long" column="TXN_ID"> <generator class="native"/> </id> ... <joined-subclass name="CashPayment" table="CASH_PAYMENT"> <key column="PAYMENT_ID"/> <property name="amount" column="CASH_AMOUNT"/> ... </joined-subclass> <joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT"> <key column="PAYMENT_ID"/> <property name="amount" column="CHEQUE_AMOUNT"/> ... </joined-subclass> </class> ``` 我们还是没有明确的提到`Payment`。 如果我们针对接口`Payment`执行查询 ——如`from Payment`—— Hibernate 自动返回`CreditCardPayment`(和它的子类,因为 它们也实现了接口`Payment`)、 `CashPayment`和`Chequepayment`的实例, 但不返回`NonelectronicTransaction`的实例。