C# NHIbernate<;任何>;映射问题

C# NHIbernate<;任何>;映射问题,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我正在为一个电子商务网站使用NHibernate,很难得到一个简单的映射。本质上,我有一个ContactDetails实体,用于保存任何类型用户的联系人详细信息-买家/卖家/广告客户/等等。我使用“any”映射,允许单个表保存每种类型的联系人详细信息。ID写入联系人详细信息ID,类型(买方/卖方/广告客户)写入联系人详细信息类型字段,如下所示 <class name="ContactDetails" table="contact_details"> <id name="ID"

我正在为一个电子商务网站使用NHibernate,很难得到一个简单的映射。本质上,我有一个ContactDetails实体,用于保存任何类型用户的联系人详细信息-买家/卖家/广告客户/等等。我使用“any”映射,允许单个表保存每种类型的联系人详细信息。ID写入联系人详细信息ID,类型(买方/卖方/广告客户)写入联系人详细信息类型字段,如下所示

<class name="ContactDetails" table="contact_details">

<id name="ID">
  <generator class="hilo" />
</id>

<any name="Party" id-type="System.Int32" meta-type="System.String" cascade="all">
  <meta-value value="buyer" class="Buyer" />
  <meta-value value="seller" class="Seller" />
  <column name="contact_details_type" />
  <column name="contact_details_id" />
</any>

在我的买家映射中,我有一对一的联系人详细信息,如下所示

<one-to-one name="ContactDetails" class="ContactDetails" cascade="all" />

这一切看起来都很好,我能够将联系人详细信息保存到数据库中。我的问题是,当我试图从数据库加载买家时,ContactDetails不会返回。生成的查询不是在contact_details_id字段上联接,而是在contact_details表的id字段上联接。我已经尝试了所有可能的方法,但无论发生什么,我都无法将代码加入到正确的字段(联系\u details\u id)。有没有人尝试过这个,如果有,它是如何工作的?如果需要更多细节,请告诉我

提前感谢,


隐式多态性不支持JP

一对一

备选方案:

  • 如果您没有超类(您可以称之为
    ),请创建
    买方
    卖方
    的超类,使用隐式以外的任何策略映射层次结构,并使用常规的
    一对一
    多对一
    关系,而不是
    任何
    (首选)
  • 不要在
    Buyer
    中映射关系,而是使用查询
(此处强调了隐式多态方法的局限性:)