Domanda

Per favore, scusa la mia ignoranza sull'argomento, poiché sono relativamente nuovo su Hibernate / NHibernate, ma ho riscontrato una mappatura che non riesco a capire:

Ecco come appare la mia tabella di database:

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

C'è un modo per mappare uno a uno con una clausola where?

Quindi un oggetto BinContent può avere ItemType di VIDEO o CLIP. Questi sono codificati come stringhe e sfortunatamente non posso cambiarlo.

Quindi, se il campo ItemType dice "VIDEO", mi piacerebbe avere un video "Molti-a-uno" Video " oggetto, Tuttavia, se il campo ItemType indica " CLIP " ;, vorrei avere una clip Many-To-One.

Aiuto!

Non sono nemmeno sicuro di voler usare un Many-To-One in questo caso. Forse uno a uno?

È stato utile?

Soluzione

Mi sembra che tu abbia un candidato per l'eredità. Se si dispone di un tipo di base astratto di BinContents, disporre di una classe derivata di VideoBinContents, che contiene solo una mappatura Video, e di un ClipBinContents che contiene solo una mappatura Clip. Il tuo tipo di articolo è il tuo discriminatore. Dai un'occhiata qui per ulteriori informazioni: http://www.hibernate.org /hib_docs/reference/en/html/inheritance.html

Altri suggerimenti

Non potresti avere sia oggetti Video che Clip nella tua classe e assicurarti solo che entrambi non vengano mai popolati contemporaneamente? Potrebbe essere necessario qualche informazione in più da te come la tua attuale struttura di classe. Inoltre, ci sarà un solo oggetto Video per Bin e viceversa?

Forse questo è più complicato di quello che stai cercando, ma sembra che forse potresti impostare una classe base per i tuoi contenitori e avere sottoclassi di Video o Clip. Utilizzando la gerarchia di ereditarietà delle tabelle per classe, è possibile utilizzare la struttura delle tabelle esistente.

Ciò consentirebbe di fornire mappature diverse per ogni sottoclasse.

Puoi dare un'occhiata a qualsiasi mappatura. Con la mappatura "qualsiasi", è possibile definire un'associazione polimorfica.

Controlla questo (paragrafo 5.2.4)

Comunque, non ho familiarità con il tuo "dominio", ma penso che anche Jim abbia ragione. Forse dovresti rivedere il tuo modello di dati e il tuo modello di dominio (se possibile) e vedere se un qualche tipo di eredità non è appropriato qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top