Question

Voici mon heirarchy:

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"

Voici mes correspondances dans deux fichiers séparés HBM:

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

Ce qui suit est l'exception que je reçois:

MappingException: erreur de validation XML: L'élément 'joint-sous-classe' dans l'espace de noms 'urn: NHibernate-mapping-2.2' a un élément enfant invalide 'discriminateur' dans l'espace de noms 'urne: NHibernate-mapping-2.2.

Qu'est-ce que je manque? Pouvez-vous associez pas une hiérarchie de sous-classe discriminé d'une joint-sous-classe?

Était-ce utile?

La solution

Qu'est-ce que vous voulez faire est pas possible.

Vérifier http://www.nhforge.org/doc/nh /en/index.html#inheritance pour les constructions autorisées.

Autres conseils

joint-sous-classe ne dispose pas d'un discriminateur parce qu'il est dans une table séparée. Voilà comment il sait ce que la sous-classe est. Si vous souhaitez utiliser un discriminateur vous pouvez utiliser une table pour tous vos sous-classes et vous utilisez la balise sous-classe cartographie

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top