質問

Hibernate / NHibernateは比較的新しいので、このトピックに関する私の無知を許してください。

これは私のデータベーステーブルの外観です:

<bincontents> 
  <id>5873715</id> 
  <title>Video Title</title> 
  <sortorder>0</sortorder> 
  <itemid>23079</itemid> 
  <itemtype>VIDEO</itemtype> 
</bincontents> 
<bincontents> 
  <id>5873716</id> 
  <title>Clip Title</title> 
  <sortorder>1</sortorder> 
  <itemid>131854</itemid> 
  <itemtype>CLIP</itemtype> 
</bincontents>

where句を使用して1対1をマッピングする方法はありますか?

したがって、BinContentオブジェクトは、VIDEOまたはCLIPのItemTypeを持つことができます。これらは文字列としてキー設定されており、残念ながら変更できません。

したがって、ItemTypeフィールドに<!> quot; VIDEO <!> quot;と表示されている場合、多対1の<!> quot; Video <!> quot;が必要です。オブジェクト、 ただし、ItemTypeフィールドに<!> quot; CLIP <!> quot;と表示されている場合は、多対1のクリップが必要です。

ヘルプ!

この場合、多対1を使用するかどうかさえわかりません。おそらく1対1ですか?

役に立ちましたか?

解決

継承の候補者がいるように思えます。 BinContentsの抽象基本型がある場合、Videoマッピングのみを含むVideoBinContentsの派生クラスと、Clipマッピングのみを含むClipBinContentsを用意します。あなたのアイテムタイプはあなたの弁別者です。詳細はこちらをご覧ください: http://www.hibernate.org /hib_docs/reference/en/html/inheritance.html

他のヒント

クラスにVideoオブジェクトとClipオブジェクトの両方があり、両方が同時に入力されないことを確認してください。現在のクラス構造など、いくつかの追加情報が必要になる場合があります。また、ビンオブジェクトごとに1つのビデオのみが存在しますか、その逆もありますか?

これはおそらくあなたが探しているものよりも複雑ですが、おそらくビンの基本クラスを設定し、VideoまたはClipのサブクラスを持つことができるようです。継承のクラス階層ごとのテーブルを使用すると、既存のテーブル構造を使用できます。

これにより、サブクラスごとに異なるマッピングを提供できます。

任意のマッピングを確認できます。 「any」マッピングを使用すると、ポリモーフィックな関連付けを定義できます。

これ(段落5.2.4)

とにかく、私はあなたの「ドメイン」に精通していませんが、ジムにもポイントがあると思います。おそらく、データモデルとドメインモデル(可能であれば)を確認し、ここで何らかの種類の継承が適切でないかどうかを確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top