Hallo zusammen,
ich bin Student und arbeite seit einigen Wochen mit Hibernate und komme soweit ziemlich gut zurecht und bin begeistert von Hibernate. Nun stehe ich leider vor einem Problem bei dem mir weder die Hibernate Referenz, "hibernate" von Sebastian Hennebrüder noch google wirklich weitergeholfen haben. Es geht um folgendes:
Ich möchte eine Klasse Location aufbauen die sowohl ein Objekt seines Parents speichert als auch eine Liste seiner Kinder vorhält. Dieses möchte ich dann mti Hibernate speichern. Der möglichen Performanceprobleme dabei wegen lazy loading usw bin ich mir bewusst.
Hier ein Ausschnitt meiner Location klasse:
Code:
public class Location {
private int id;
private String locationName;
private String locationDescription;
private Location parentLocation = null;
private List<Location> childLocations;
}
Konstruktoren sowie getter/setter sind natürlich vorhanden. Ich habe das ganze der Übersicht halber eh ein bisschen eingekürzt da die restlichen Felder für meine Anfrage irrelevant sind.
Ich nutze XML-Mapping da mir annotations ein wenig zu unübersichtlich sind:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class lazy="false"
name="de.uni.project.server.appllogic.location.Location" table="CW_LOCATION">
<cache include="all" region="myDefaultCache" usage="read-write"/>
<id column="cw_location_id" name="id">
<generator class="native"/>
</id>
<property column="cw_locationName" generated="never" lazy="false"
name="locationName" type="string"/>
<property column="cw_locationDescription" generated="never"
lazy="false" name="locationDescription" type="string"/>
<component class="de.uni.project.server.appllogic.location.Location" name="parentLocation"/>
</class>
</hibernate-mapping>
Wie man sehen kann hänge ich bereits beim auflösen der ParentLocation. Er speichert zwar eine zweite Location wenn ich dieser eine schon vorhande mit übergebe. Beim auslesen hat diese aber keinen parent. Via DB Explorer kann ich auch keinen key sehen der darauf hindeutet. Sprich er speichert die beziehung nicht richtig. Ich habe nun schon einiges ausprobiert an many-to-one bezeihung usw. bin aber nie auf eine ordentliche Lösung gekommen. Vielleicht weiss hier jemand eine ordentliche saubere Lösung oder einen guten Tip/rat wie ich das ganze aufsetzen soll.
Vielen vielen Danke im Voraus für eure Mühen.
Oliver Hoppe