0

これはおそらく信じられないほど単純ですが、現時点では木に木が見えません。

簡潔にするために、関連する単語 (同義語) を持つ単語オブジェクトをモデル化したいと思います。そうすることで、次のマッピングを行うことができます。

<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

ただし、単語オブジェクトのインスタンスにオブジェクトのバッグをマップできるかどうかを知りたいです...それが理にかなっていれば、次のような関連する単語にアクセスできます。

単語.単語

マップ要素と複合要素をいじってみましたが、すべて役に立ちませんでした。親切な人が正しい方向に向けてくれるのではないかと思っていました。

た、kmoo01

4

1 に答える 1

1

これは、 Wordエンティティを単語 (同義語) のコレクションにマップします。

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

必要に応じて、および要素内のテーブル名、classおよび およびset要素内の列名をカスタマイズできます。keymany-to-many

セマンティクスにより適しているため、set代わりにを使用したことに注意してください。またはbagにマップできます。ICollection<Word>Iesi.Collections.Generic.ISet<Word>

于 2010-05-11T14:08:35.453 に答える