如何在nhibernate中映射更深层的层次结构
我有这个对象图,我想映射:如何在nhibernate中映射更深层的层次结构,nhibernate,inheritance,nhibernate-mapping,Nhibernate,Inheritance,Nhibernate Mapping,我有这个对象图,我想映射: 摘要帐户(用户名、密码等) 抽象客户(购物车、订单、角色) 个人客户(用户数据) CorporateCustomer(不同的用户数据、公司数据) 管理员(管理员角色) 如何将其映射到一个表?(我知道如何使用只有1层的实体层次结构来实现这一点,就像在文档中一样,但这是不同的) 有人有主意吗? 我也问过同样的问题 ,但到目前为止还没有得到一个有用的答案。据我所见,它应该与一个层次的深层层次结构没有区别。 试试这个: <hibernate-mapping&
- 摘要帐户(用户名、密码等)
- 抽象客户(购物车、订单、角色)
- 个人客户(用户数据)
- CorporateCustomer(不同的用户数据、公司数据)
- 管理员(管理员角色)
- 抽象客户(购物车、订单、角色)
,但到目前为止还没有得到一个有用的答案。据我所见,它应该与一个层次的深层层次结构没有区别。 试试这个:
<hibernate-mapping>
<class
name="Account"
table="..." >
<property .../>
...
<subclass
name="Customer" >
<property ... "/>
...
</subclass>
<subclass
name="IndividualCustomer" >
<property ... "/>
...
</subclass>
...
</class>
...
...
...
我这里没有NHibernate来检查,但看起来应该能用。如果没有嵌套子类元素,您可能还希望尝试嵌套子类元素。嵌套子类与xml模式背道而驰,所以我猜,它不会起作用。 我可能还需要嵌套discriminator声明,这似乎也有点骇人听闻 把它画成平面图。。。我为抽象类传递了一个鉴别器,因为抽象类无法实例化,所以不能使用该鉴别器。似乎也错了 但是你是对的,我以后会试试的。现在,对我来说,让客户拥有一个账户似乎是一个更好的主意,而不是成为一个账户
谢谢 诚然,组合而不是继承几乎总是一个好主意。然而,你的问题仍然适用于少数情况,而事实并非如此。