我使用Table Per Subclass策略来持久化继承层次结构:
感谢您的任何意见。
让我感到困惑的是,我的具体课程所拥有的唯一属性是他们从这些界面获得的。这就是为什么我认为我必须将接口与具体类一起映射。
答案 0 :(得分:1)
NHibernate不了解或关心接口。例如,您不能使用NHibernate查询实现特定接口的对象。您有一个每表类映射,因此您应该将子类声明映射为described in the documentation。
答案 1 :(得分:0)
我自己对NHibernate很新,但我做了类似的事情,所以如果我发布一些正确的内容,它会给我们一个开始,所以你可以发表评论,并且在stackoverflow的精神中,有人可以编辑我的答案。
我认为hbm基本上需要使用“subclass”,“joined-subclass”或“union-subclass”来实现你想要的东西。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="YourAssembly.Bll"
namespace="YourAssembly.Bll.Domain">
<class name="Transaction" table="Transaction">
<id name="Id">
<generator class="native"/>
</id>
<property name="Amount" not-null="true" />
<property name="Currency"/>
<joined-subclass name="Debit" table="DebitTransaction">
<key column="TransactionId"/>
<property name="CardHolderName" not-null="true" />
</joined-subclass>
</class>
</hibernate-mapping>