2
我有我在NHibernate的使用表的每類映射到的繼承層次結構判據。我的映射文件看起來像下面的文件(大量屬性省略)。繼承:上實體類型和子類的屬性
查詢這個層次,我基於從用戶輸入過濾器建立一個動態的DetachedCriteria爲消息。消息(層次結構中的任何類型)應該在一個列表中返回給用戶。
- 我想建立一個基於消息類型的標準,即。用戶可以指定獲取類型爲的所有消息SMSMessage或EmailMessage與ReceivedDate>'2009-01-01'。我會怎麼做呢?
- 在相同的查詢中,用戶可以指定如果消息是InternalMessage,它應該有優先級 = 2.我該如何指定這種類型特定的謂詞?
所有這些都可以在LINQ中完成,所以我希望我也可以在NHibernate中做到這一點。
<class name="Message" table="Message" abstract="true" discriminator-value="null">
<id name="MessageId">
<generator class="identity" />
</id>
<discriminator column="Type" type="byte" />
<property name="ParentId" />
<property name="ReceivedDate" />
...
<subclass name="SMSMessage" discriminator-value="0">
<property name="Text" column="Text" />
...
</subclass>
<subclass name="MMSMessage" discriminator-value="1">
<property name="Subject" />
...
</subclass>
<subclass name="EmailMessage" discriminator-value="2">
<property name="BodyPlainText" />
...
</subclass>
<subclass name="InternalMessage" discriminator-value="4">
<property name="Priority" />
...
</subclass>
</class>