Hallo,
ich habe ein Verständnisproblem.
Ich habe einen rekursiven Datentyp Location, der sich folgendermaßen definiert:
Code:
public class Location{
private id = 0;
private name = "";
// ...
private Set locations = new HashSet<Location>();
// constr...
// get... set...
}
ich habe folgende Location.hbm.xml:
Code:
<hibernate-mapping>
<class name="de.test.Location" table="ort">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="parentid" column="parent"/>
<property name="name" column="name"/>
<set name="locations" table="ort" lazy="false" >
<key column="id" />
<many-to-many column="parent" class="de.test.Location" />
</set>
</class>
</hibernate-mapping>
Ich würde gerne haben, dass hibernate automatisch die Location Objekte initialisiert, jedoch bekomme ich, wenn ich diese hmb.xml nutze den Fehler "Initial SessionFactory creation failed.org.hibernate.MappingException: Foreign key (FK1AEF1A262D042:ort [parent])) must have same number of columns as the referenced primary key (ort [id,parent])".
Das Problem ist, daß die zugrunde liegende Datenstruktur in der Tabelle Ort folgendermaßen aussieht.
Ort
id = primary key
parent = foreign key auf ort
name = name der lokation
Hat jemand eine Idee, wie ich dieses Problem löse ? Oder ist solch eine Konstellation von Hibernate nicht gedacht und sollte ich diese Tabelle splitten in:
Ort
id = ...
name = ...
und die Tabelle
OrtStruktur
id = ...
parent = ...
???
Kann mir jemand weiterhelfen ?