Benutze Hibernate 3.2 mit MySql 5.
Habe die abstrakte Klasse Ressource:
Code:
public abstract class Ressource {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Von dieser erben 2 weitere kleine Klassen (Gegenstand und Raum).
Klasse Gegenstand:
Code:
public class Gegenstand extends Ressource{
private String wert;
public String getWert() {
return wert;
}
public void setWert(String wert) {
this.wert = wert;
}
}
Klasse Raum:
Code:
public class Raum extends Ressource{
private String gebaeude;
public String getGebaeude() {
return gebaeude;
}
public void setGebaeude(String gebaeude) {
this.gebaeude = gebaeude;
}
}
In meiner Ressource.hbm.xml steht folgendes nun:
Code:
<hibernate-mapping>
<class name="uebung9aPackage.Ressource" table="ressource" >
<!-- Dies sind die Eigenschaften der Klasse "Ressource" -->
<!-- das ID-Feld der Tabelle "ressource" -->
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<property name="name" column="name" type="string"/>
<discriminator column="disc" type="string" length="1"/>
<subclass name="uebung9aPackage.Raum" discriminator-value="r">
<property name="gebaeude" column="gebaeude" type="string"/>
</subclass>
<subclass name="uebung9aPackage.Gegenstand" discriminator-value="g">
<property name="wert" column="wert" type="string"/>
</subclass>
</class>
</hibernate-mapping>
Das Problem liegt nun beim sichern der Eigenschaft "name" der abstrakten Klasse Ressource. Weis der Geier woran das wieder liegt, aber der Befehl scheint falsch zu sein:
Code:
<property name="name" column="name" type="string"/>
Entferne ich diese Zeile wird mein Datensatz gesichert, es ist halt ein Null-Wert in der Spalte "name" vorhanden. Sobald aber diese Zeile drinnen steht kommt folgender Fehler:
Code:
ERROR XMLHelper: - Error parsing XML: XML InputStream(30) 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)*)".
Weis jemand woran das liegt?