Hallo,
ich habe die Klassen:
TaskType (Basisklasse),
OtherTask (erbt von TaskType),
FtpChangesTask (erbt von TaskType) und
FtpCompleteTask (erbt vonTaskType)
Die abgeleiteten Klassen implementieren alle dasselbe Interface und unterscheiden sich nur durch ihre Implementation.
Ich wollte deshalb die beiden Datenelemente (TaskTypeNo und BranchNo)
in die Basisklasse integrieren da die 3 abgeleiteten Klassen sie benutzen.
Meine Mapping Datei:
Code:
<hibernate-mapping>
<class name="TaskType" table="TaskType">
<!-- Primärschlüssel -->
<id name="taskTypeId" type="long">
<column name="TaskTypeId" />
<generator class="identity" />
</id>
<!-- Diskriminator Spalte -->
<discriminator column="TaskTypeDiscriminator" type="string">
</discriminator>
<!-- Abgeleitete Klassen -->
<subclass name="OtherTask" discriminator-value="OtherTask" />
<subclass name="FtpChangesTask" discriminator-value="FtpChangesTask" />
<subclass name="FtpCompleteTask" discriminator-value="FtpCompleteTask" />
<!-- Datenelemente -->
<property name="taskTypeNo" type="int">
<column name="TaskTypeNo" not-null="true" />
</property>
<property name="branchNo" type="int">
<column name="BranchNo" not-null="true" />
</property>
</class>
</hibernate-mapping>
Die zugehörigen Java Klassen stimmen soweit überein;
wenn ich aber das Programm starten möchte bekomm ich von Log4J eine Fehlermeldung:
Code:
INFO - Reading mappings from resource: model/tasktypes/TaskType.hbm.xml
ERROR - Error parsing XML: XML InputStream(31) The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
Wenn ich die beiden property-mappings weglasse tuts einwandfrei.
Bin für jeden Hinweis oder Hilfe dankbar!!!
Gruß
Matze