Pregunta

Aquí está mi heirchy:

class abstract Entity { /*members*/ } // mapped to entity table
class abstract User : Entity { /*members*/ } // mapped to user table

class Employee : User { /*no members*/ } // no table, discriminator = "E"
class Contractor : User { /*no members*/ } // no table, discriminator = "C"

Aquí están mis asignaciones en dos archivos HBM separados:

<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2">
  <id name="Id" column="id">
    <generator class="guid.comb" />
  </id>
  <property ... />
</class>

<joined-subclass name="User" extends="Entity" table="user">
  <key column="id" />
  <discriminator column="type" />
  <property ... />
  <subclass name="Employee"   discriminator-value="E" />
  <subclass name="Contractor" discriminator-value="C" />
</joined-subclass>

La siguiente es la excepción que obtengo:

MappingException: Error de validación XML: el elemento 'unión de clase unida' en el espacio de nombres 'Urna: NHibernate-Mapping-2.2' tiene un elemento infantil inválido 'Discriminador' en el espacio de nombres 'Urna: NHibernate-Mapping-2.2'.

¿Qué me estoy perdiendo? ¿No puedes mapear una jerarquía de subclase discriminada de una subclase unida?

¿Fue útil?

Solución

Lo que quieres hacer no es posible actualmente.

Controlar http://www.nhforge.org/doc/nh/en/index.html#inheritance para construcciones permitidas.

Otros consejos

La subclass unida no tiene un discriminador porque está en una tabla separada. Así es como sabe cuál es la subclase. Si desea usar un discriminador, usaría una tabla para todas sus subclases y usaría el subclase cartografía

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