如何在nhibernate中映射更深层的层次结构

如何在nhibernate中映射更深层的层次结构,nhibernate,inheritance,nhibernate-mapping,Nhibernate,Inheritance,Nhibernate Mapping,我有这个对象图,我想映射: 摘要帐户(用户名、密码等) 抽象客户(购物车、订单、角色) 个人客户(用户数据) CorporateCustomer(不同的用户数据、公司数据) 管理员(管理员角色) 如何将其映射到一个表?(我知道如何使用只有1层的实体层次结构来实现这一点,就像在文档中一样,但这是不同的) 有人有主意吗? 我也问过同样的问题 ,但到目前为止还没有得到一个有用的答案。据我所见,它应该与一个层次的深层层次结构没有区别。 试试这个: <hibernate-mapping&

我有这个对象图,我想映射:

  • 摘要帐户(用户名、密码等)
    • 抽象客户(购物车、订单、角色)
      • 个人客户(用户数据)
      • CorporateCustomer(不同的用户数据、公司数据)
    • 管理员(管理员角色)
如何将其映射到一个表?(我知道如何使用只有1层的实体层次结构来实现这一点,就像在文档中一样,但这是不同的)

有人有主意吗? 我也问过同样的问题
,但到目前为止还没有得到一个有用的答案。

据我所见,它应该与一个层次的深层层次结构没有区别。 试试这个:

<hibernate-mapping> 
<class                                                     
    name="Account" 
    table="..." > 
    <property .../> 
        ... 
    <subclass                                              
        name="Customer" > 
        <property ... "/> 
        ... 
    </subclass> 

    <subclass                                              
        name="IndividualCustomer" > 
        <property ... "/> 
        ... 
    </subclass> 
    ... 
</class> 

... 
... 
... 


我这里没有NHibernate来检查,但看起来应该能用。如果没有嵌套子类元素,您可能还希望尝试嵌套子类元素。

嵌套子类与xml模式背道而驰,所以我猜,它不会起作用。 我可能还需要嵌套discriminator声明,这似乎也有点骇人听闻

把它画成平面图。。。我为抽象类传递了一个鉴别器,因为抽象类无法实例化,所以不能使用该鉴别器。似乎也错了

但是你是对的,我以后会试试的。现在,对我来说,让客户拥有一个账户似乎是一个更好的主意,而不是成为一个账户


谢谢

诚然,组合而不是继承几乎总是一个好主意。然而,你的问题仍然适用于少数情况,而事实并非如此。