2010-05-11 5 views
0

이것은 대단히 간단 할 것입니다. 그러나 그저 그 나무의 나무를 볼 수 없습니다. 에 대한 의미 같은nHibernate 자체 조인 매핑

<class name="Word" table="bs_word"> 
<id name="Id" column="WordId" type="Int32" unsaved-value="-1"> 
    <generator class="native"> 
    <param name="sequence"></param> 
    </generator> 
</id> 

<property name="Key" column="word" type="String" length="50" /> 
<many-to-one name="SynonymGroup" class="BS.Core.Domain.Synonym, BS.Core" column="SynonymId" lazy="false"/> 


<class name="Synonym" table="bs_Synonym"> 
<id name="Id" column="SynonymId" type="Int32" unsaved-value="-1"> 
    <generator class="native"> 
    <param name="sequence"></param> 
    </generator> 
</id> 
<property name="Alias" column="Alias" type="String" length="50" /> 
<bag name="Words" cascade="none" lazy="false" inverse="true"> 
    <key column="SynonymId" /> 
    <one-to-many class="Word" /> 
</bag> 

매핑을 :

간결하게, 나는 다음과 같은 매핑을 가질 수 있도록하고, 그것은 (동의어)에 단어를 관련있는 단어 객체를 모델링하고 싶습니다 주어진 단어,이 같은 관련 단어 (동의어)에 액세스 할 수 있습니다

word.SynonymGroup.Words이

그러나 내가 알고 싶은이 단어의 인스턴스에 객체의 가방을 매핑 할 수있는 경우 개체가 ... 의미가있는 경우 관련 단어에 액세스 할 수 있습니다. 이 같은 S : 아무 소용이

word.Words 내가지도 요소와 장난 해봤

, 복합 요소를, 모두는 - 어떤 종류의 사람이 올바른 방향으로 날 지점 수 있다면 그래서 궁금 해서요 ? 당신은 classset 요소에 테이블 이름을 사용자 정의 할 수 있습니다

<class name="Word"> 
    <id ...> 
    <generator .../> 
    </id> 
    <set name="Synonyms" cascade="all"> 
    <key /> 
    <many-to-many class="Word" /> 
    </set> 
</class> 

및 열 :이 단어의 모음 (동의어)와 말씀 개체를 매핑 할 kmoo01

답변

1

타, 필요에 따라 keymany-to-many 요소의 이름

bag 대신 set을 사용 했으므로 의미가 더 잘 맞습니다. ICollection<Word> 또는 Iesi.Collections.Generic.ISet<Word>에 매핑 할 수 있습니다.