每个子类的NHibernate表使用鉴别器映射 - 如何在连接表上定义过滤器?

时间:2011-12-18 20:33:15

标签: nhibernate filter mapping subclass discriminator

让我们假设我正在处理下一个情况 (摘自:http://knol.google.com/k/nhibernate-chapter-8-inheritance-mapping#8(2E)1(2E)3(2E)(C2)(A0)Table_per_subclass(2C)_using_a_discriminator

<class name="Payment" table="PAYMENT">
<id name="Id" type="Int64" column="PAYMENT_ID">
    <generator class="native"/>
</id>
<discriminator column="PAYMENT_TYPE" type="string"/>
<property name="Amount" column="AMOUNT"/>
...
<subclass name="CreditCardPayment" discriminator-value="CREDIT">
    <join table="CREDIT_PAYMENT">
        <key column="PAYMENT_ID"/>
        <property name="CreditCardType" column="CCTYPE"/>
        ...
    </join>
</subclass>
<subclass name="CashPayment" discriminator-value="CASH">
    <join table="CASH_PAYMENT">
        <key column="PAYMENT_ID"/>
        ...
    </join>
</subclass>
<subclass name="ChequePayment" discriminator-value="CHEQUE">
    <join table="CHEQUE_PAYMENT" fetch="select">
        <key column="PAYMENT_ID"/>
        ...
    </join>
</subclass>
</class>

我的问题是,当从“付款”表中选择时,我需要设置过滤器 在子类上,因为对于每个“PAYMENT_ID”,我可以拥有更多 而不是子类表中的一个记录。我需要在子类上设置WHERE子句 表,以便根据我的业务逻辑获得单个相关记录。

编辑: 我正在处理遗留系统,它在数据表中有历史支持。 因此,当对某些记录进行更改时,会出现一个bool列 “IS_LAST”确定记录的哪个迭代是最后一个。 “IS_LAST”列存在于每个子类表中:CreditCardPayment,CashPayment .. 因为我想在子类的表上定义过滤器。当发现没有用于子类映射的过滤器元素时,我遇到了一个问题。我有解决方案吗?

0 个答案:

没有答案