Nhibernate diskriminierte Unterklassen einer gemeinsamen Unterklasse
-
24-10-2019 - |
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?
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