簡體   English   中英

nHibernate 2.0 - 映射復合id *和*多對一關系會導致“無效索引”錯誤

[英]nHibernate 2.0 - mapping a composite-id *and* many-to-one relationship causes “invalid index” error

我有個問題。 想象一下這個數據模型:

[Person] table has: PersonId, Name1  
[Tag] table has:  TagId, TagDescription  
[PersonTag] has: PersonId, TagId, IsActive

由於[PersonTag]不僅僅是一個簡單的多對多連接表,我在nHibernate中創建了所有三個實體(就像它們在數據模型中一樣)。 因此, PersonTag需要一個復合id,我已經映射到這樣的類:

<composite-id name="PersonTagKey" class="PersonTagKey">
  <key-property name="PersonId"></key-property>
  <key-property name="TagId"></key-property>
</composite-id> 

我想遍歷對象圖,並能夠從檢索到的PersonTag對象中查看PersonTag對象。 所以,我在PersonTag對象上有屬性來做,像這樣映射:

<many-to-one name="Person" column="PersonId" lazy="proxy" cascade="none" class="Person"/>
<many-to-one name="Tag" column="TagId" lazy="proxy" cascade="none" class="Tag"/>

當我嘗試創建一個PersonTag對象並保存它時,我得到一個“此SqlParameterCollection的無效索引n,其中Count = n”錯誤。 我知道這是因為我已經兩次映射了PersonIdTagId屬性,一次是復合id,一次是多對一關系。 如果我不映射多對一對象,那么一切正常。

有沒有辦法讓我能夠在同一個nHibernate實體中建模的同一列中擁有復合ID和多對一關系?

凱,這是答案。 幾乎沒有關於此的文檔:

<composite-id name="PersonTagKey" class="PersonTagKey"> 
  <key-many-to-one name="Person" column="PersonId" lazy="proxy" class="Person">
  <key-many-to-one name="Tag" column="TagId" lazy="proxy" class="Tag"/>
</composite-id>

這將允許您創建由多對一關系的倒數組成的復合ID。

好狩獵......

暫無
暫無

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

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