让我们假设我正在处理下一个情况 (摘自: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 .. 因为我想在子类的表上定义过滤器。当发现没有用于子类映射的过滤器元素时,我遇到了一个问题。我有解决方案吗?