Pregunta

Disculpe mi ignorancia sobre el tema, ya que soy relativamente nuevo en Hibernate / NHibernate, pero he encontrado un mapeo que no puedo entender:

Así es como se ve mi tabla de base de datos:

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

¿Hay alguna manera de mapear un uno a uno con una cláusula where?

Entonces, un objeto BinContent puede tener ItemType de VIDEO o CLIP. Estos están codificados como cadenas, y desafortunadamente no puedo cambiar eso.

Entonces, si el campo ItemType dice " VIDEO " ;, me gustaría tener un video Many-To-One " objeto, Sin embargo, si el campo ItemType dice "CLIP", me gustaría tener un clip de muchos a uno.

¡Ayuda!

Ni siquiera estoy seguro de si quiero usar un Many-To-One en este caso. ¿Quizás un uno a uno?

¿Fue útil?

Solución

Me parece que tienes un candidato para la herencia. Si tiene un tipo base abstracto de BinContents, tenga una clase derivada de VideoBinContents, que contiene solo una asignación de Video, y un ClipBinContents que contiene solo una asignación de Clip. Su tipo de elemento es su discriminador. Eche un vistazo aquí para obtener más información: http://www.hibernate.org /hib_docs/reference/en/html/inheritance.html

Otros consejos

¿No podría tener los objetos Video y Clip en su clase y simplemente asegurarse de que ambos nunca se llenen al mismo tiempo? Es posible que necesite más información suya, como su estructura de clase actual. Además, ¿solo habrá un video por objeto Bin y viceversa?

Quizás esto sea más complicado de lo que está buscando, pero parece que quizás podría configurar una clase base para sus contenedores y tener subclases de Video o Clip. Usando la jerarquía de herencia de la tabla por clase, puede usar su estructura de tabla existente.

Hacer esto le permitiría proporcionar diferentes asignaciones para cada subclase.

Puedes echar un vistazo a cualquier mapeo. Con el mapeo 'any', puede definir una asociación polimórfica.

Marque esto (párrafo 5.2.4)

De todos modos, no estoy familiarizado con su 'dominio', pero creo que Jim también tiene un punto. Quizás debería revisar su modelo de datos y modelo de dominio (si es posible), y ver si algún tipo de herencia no es apropiada aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top