[英]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
對象中查看Person
和Tag
對象。 所以,我在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”錯誤。 我知道這是因為我已經兩次映射了PersonId
和TagId
屬性,一次是復合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.