这是我的heirarchy:
class abstract Entity { /*members*/ } // mapped to entity table class abstract User : Entity { /*members*/ } // mapped to user table class Employee : User { /*no members*/ } // no table, discriminator = "E" class Contractor : User { /*no members*/ } // no table, discriminator = "C"
这是我在两个单独的hbm文件中的映射:
<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2"> <id name="Id" column="id"> <generator class="guid.comb" /> </id> <property ... /> </class> <joined-subclass name="User" extends="Entity" table="user"> <key column="id" /> <discriminator column="type" /> <property ... /> <subclass name="Employee" discriminator-value="E" /> <subclass name="Contractor" discriminator-value="C" /> </joined-subclass>
以下是我得到的例外情况:
MappingException:XML验证错误:命名空间'urn:nhibernate-mapping-2.2'中的元素'joined-subclass'在命名空间'urn:nhibernate-mapping-2.2'中具有无效的子元素'discriminator'。
我错过了什么?你能不映射连接子类的区别子类层次结构吗?
答案 0 :(得分:2)
joined-subclass没有鉴别器,因为它在一个单独的表中。这就是它如何知道子类是什么。如果要使用鉴别器,可以对所有子类使用一个表,并使用subclass映射
答案 1 :(得分:2)
目前无法做你想做的事。
检查http://www.nhforge.org/doc/nh/en/index.html#inheritance是否允许构造。