0

私は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フィールドに「VIDEO」と表示されている場合は、多対1の「Video」オブジェクトが必要ですが、ItemTypeフィールドに「CLIP」と表示されている場合は、多対1のクリップが必要です。 。

ヘルプ!

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

4

4 に答える 4

4

相続の候補者がいるような気がします。BinContents の抽象基本型がある場合は、Video マッピングのみを含む VideoBinContents の派生クラスと、Clip マッピングのみを含む ClipBinContents を用意します。あなたのitemtypeはあなたの識別子です。詳細については、こちらをご覧ください: http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html

于 2009-01-21T20:40:58.520 に答える
0

クラスに Video オブジェクトと Clip オブジェクトの両方を持ち、両方が同時に読み込まれないようにすることはできませんか? 現在のクラス構造など、さらに情報が必要になる場合があります。また、Bin オブジェクトごとに 1 つのビデオしかありませんか、またはその逆ですか?

于 2009-01-21T20:39:56.260 に答える
0

おそらく、これは探しているものよりも複雑ですが、ビンの基本クラスをセットアップして、ビデオまたはクリップのサブクラスを持つことができるようです。継承のクラス階層ごとのテーブルを使用すると、既存のテーブル構造を使用できます。

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

于 2009-01-21T20:43:59.887 に答える
0

any マッピングを見ることができます。「any」マッピングを使用すると、多態的な関連付けを定義できます。

これを確認してください(5.2.4項)

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

于 2009-01-21T20:45:03.503 に答える