簡體   English   中英

NHibernate的 <any> 映射問題

[英]NHIbernate <any> mapping issue

我正在將NHibernate用於電子商務網站,並且很難獲得應該是一個簡單的映射工作。 基本上我有一個ContactDetails實體,用於保存任何類型用戶的聯系方式 - 買方/賣方/廣告商/等。 我使用“any”映射來允許單個表保存每種類型的contact_details。 該ID將寫入contact_details_id,並將類型(買方/賣方/廣告商)寫入contact_details_type字段,如下所示。

<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保存到數據庫中。 我的問題是,當我嘗試從數據庫加載買方時,不會返回ContactDetails。 生成的查詢不是加入contact_details_id字段,而是加入contact_details表的ID字段。 我已經嘗試了所有可能的但是無論發生什么,我都無法在正確的字段(contact_details_id)上獲取代碼。 有沒有人嘗試過這個,如果有的話,它是如何工作的? 如果需要額外的細節,請告訴我。

提前致謝,

J.P

隱式多態性不支持one-to-one

備擇方案:

  • 如果您沒有BuyerSeller ,可以創建一個超級類別(您可以稱之為Party ),使用除隱式之外的任何策略映射層次結構,並使用常規one-to-onemany-to-one關系而不是any (首選)
  • 不要在Buyer映射關系並改為使用查詢

(這里突出了隱式多態方法的局限性: http//nhibernate.info/doc/nh/en/index.html#inheritance-limitations

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM