首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHIbernate <any>映射问题

NHIbernate <any>映射问题
EN

Stack Overflow用户
提问于 2010-07-07 10:11:09
回答 1查看 707关注 0票数 3

我正在使用NHibernate的电子商务网站,我有困难得到什么应该是一个简单的映射工作。本质上,我有一个ContactDetails实体,用于保存任何类型的用户-买家/卖家/广告商/等等的联系方式。我使用" any“映射来允许单个表为每种类型保存contact_details。ID写入contact_details_id,类型(买方/卖方/广告商)写入contact_details_type字段,如下所示。

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
<one-to-one name="ContactDetails" class="ContactDetails" cascade="all" />

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

提前谢谢你,

JP

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-09 22:36:22

隐式多态性不支持one-to-one

替代方案:

  • 创建BuyerSeller的超类(如果没有)(您可以将其称为Party),使用除隐式之外的任何策略映射层次结构,并使用常规one-to-onemany-to-one关系而不是any来映射Buyer中的关系,并使用查询来代替<代码>H212<代码>F213

(这里强调了隐式多态性方法的局限性:http://nhibernate.info/doc/nh/en/index.html#inheritance-limitations)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3191466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档