Frage

Hier ist meine Erbe:

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"

Hier sind meine Zuordnungen in zwei separaten HBM -Dateien:

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

Das Folgende ist die Ausnahme, die ich bekomme:

MappingException: XML-Validierungsfehler: Das Element 'Enter-subClass' in Namespace 'Urn: NhiberNate-Mapping-2.2' hat ein ungültiges untergeordnetes Element 'Diskriminator' in Namespace 'Urn: Nhibernate-Mapping-2.2'.

Was vermisse ich? Können Sie keine diskriminierte Unterklassehierarchie einer Enterbausbuschkasse zuordnen?

War es hilfreich?

Lösung

Was Sie tun möchten, ist derzeit nicht möglich.

Prüfen http://www.nhforge.org/doc/nh/en/index.html#inheritance für erlaubte Konstrukte.

Andere Tipps

Enter-Subclass hat keinen Diskriminator, da er sich in einer separaten Tabelle befindet. So weiß es, was die Unterklasse ist. Wenn Sie einen Diskriminator verwenden möchten, verwenden Sie eine Tabelle für alle Ihre Unterklassen und Sie würden die verwenden Unterklasse Kartierung

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