nHibernate自连接映射

nHibernate自连接映射,nhibernate,join,mapping,self,synonym,Nhibernate,Join,Mapping,Self,Synonym,这可能是难以置信的简单,但我只是看不见树木的树木在目前 为简洁起见,我想对一个word对象进行建模,该对象具有与其相关的单词(同义词),在此过程中,我可以有以下映射: <class name="Word" table="bs_word"> <id name="Id" column="WordId" type="Int32" unsaved-value="-1"> <generator class="native"> <param name="

这可能是难以置信的简单,但我只是看不见树木的树木在目前

为简洁起见,我想对一个word对象进行建模,该对象具有与其相关的单词(同义词),在此过程中,我可以有以下映射:

<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对象的实例上……如果这有意义,那么我可以访问如下相关单词:

字,字

我尝试过使用map元素和composite元素,但都无济于事,所以我想知道是否有人能为我指明正确的方向

ta,
kmoo01

这将映射一个单词的实体和一组单词(同义词):


您可以根据需要自定义
集合
元素中的表名,以及
多对多
元素中的列名

注意,我使用了
set
而不是
bag
,因为它更符合语义。您可以将其映射到
ICollection
Iesi.Collections.Generic.ISet

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