Frage

Bitte entschuldigen Sie meine Unwissenheit über das Thema, da ich relativ neu bin / NHibernate Hibernate, aber ich habe eine Abbildung begegnete ich kann nicht herausfinden:

Dies ist, was meine Datenbank-Tabelle wie folgt aussieht:

<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>

Gibt es eine Möglichkeit, eine Eins-zu-eins mit einem where-Klausel zur Karte?

So ein BinContent Objekt ItemType entweder VIDEO oder CLIP haben. Diese wird als Zeichenfolge eingegeben hat, und ich kann das leider nicht ändern.

Also, wenn das ItemType Feld sagt "VIDEO", würde Ich mag ein Many-To-One "Video" Objekt haben, Wenn jedoch die ItemType Feld sagt "CLIP", ich mag einen Many-To-One Clip haben.

Hilfe

Ich bin nicht einmal sicher, ob ich eine Many-To-One in diesem Fall verwendet werden soll. Vielleicht ist ein One-To-One?

War es hilfreich?

Lösung

Es klingt für mich wie Sie einen Kandidaten für die Vererbung. Wenn Sie eine abstrakte Basistyp BinContents haben, hat eine abgeleitete Klasse von VideoBinContents, die nur ein Video-Mapping enthält, und und ein ClipBinContents, die nur ein Clip-Mapping enthält. Ihr itemtype ist Ihr Scheider. Werfen Sie einen Blick hier für mehr: http://www.hibernate.org /hib_docs/reference/en/html/inheritance.html

Andere Tipps

Könnten Sie nicht haben sowohl Video und Clip Objekte in Ihrer Klasse und nur sicherstellen, dass beide sind nie zur gleichen Zeit bevölkern? Könnte einige weitere Informationen von Ihnen benötigen, wie Ihre aktuelle Klassenstruktur. Auch Wird es nur ein Video pro Bin Objekt sein und umgekehrt?

Vielleicht ist dies komplizierter als das, was Sie suchen, aber es scheint, dass vielleicht könnten Sie Setup eine Basisklasse für Ihre Behälter und haben Unterklassen von Video oder Clip. Mit Hilfe der Tabelle pro Klassenhierarchie der Vererbung, können Sie Ihre vorhandene Tabellenstruktur verwenden können.

Dadurch würde können Sie verschiedene Zuordnungen für jede Unterklasse liefern.

Sie können einen Blick auf die jede Zuordnung nehmen. Mit dem ‚jedem‘ Mapping können Sie eine polymorphe Vereinigung definieren.

Überprüfen Sie diese (Ziffer 5.2.4)

Wie auch immer, ich bin nicht vertraut mit dem ‚Domain‘, aber ich denke, Jim als auch einen Punkt hat. Vielleicht sollen Sie Ihr Datenmodell und domainmodel (wenn möglich) überprüfen und festzustellen, ob eine Art der Vererbung hier nicht geeignet ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top