Hibernate many-to-one Beziehung

bugman123

Grünschnabel
Hallo,
ich habe ein Problem mit Hibernate.
Und zwar habe ich eine Klasse Veranstaltung und eine Klasse Dozenten. Einer Veranstaltung wird genau ein Dozent zugewiesen. Der Dozent hat kein Set von Veranstaltung und damit ist die Verbindung unidirektional.
Wenn ich nun eine Veranstaltung mit Dozent hinzufüge klappt dieses auch ohne Problem. Bei einer Abfrage jedoch wird die Veranstaltung mit allen anderen many-to-many-Beziehungen korrekt ausgegeben, jedoch nicht der Dozent. Bei dieser erhält man über die getter-Methoden nur null-Werte. In der Datenbank hingegen werden sie korrekt angezeigt.
Woran kann dieses liegen?
Ihr würdet mir wirklich weiter helfen!

Im Variablen-Inspektor zeit er mir für den Dozenten statt einem normalen Dozent-Objekt folgendes an:
dozent Dozent$$EnhancerByCGLIB$$9797bf54 (id=1005)
CGLIB$BOUND true
CGLIB$CALLBACK_0 CGLIBLazyInitializer (id=1016)
CGLIB$CALLBACK_1 null
CGLIB$CONSTRUCTED true
dozenten HashSet<E> (id=1017)
dozentName null
dozentVorname null
dozentWechselzeit 0
id 0


DOZENT.hbm:

<?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 package="dataLayer">
<class name="Dozent" table="DOZENT">
<id name="id">
<generator class="native" />
</id>
<natural-id mutable="true">
<property name="dozentName" />
<property name="dozentVorname" />
</natural-id>
<property name="dozentWechselzeit" />
</class>

</hibernate-mapping>


Veranstaltung.hbm

<?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 package="dataLayer">
<class name="Veranstaltung" table="VERANSTALTUNG">
<id name="id">
<generator class="native" />
</id>
<natural-id mutable="true">
<property name="startZeit" />
<property name="endZeit" />
<property name="bezeichnung" />
</natural-id>
<many-to-one name="dozent" column="DozentId" not-null="true" />

<property name="isSeminar" />
<property name="isKlausur" />
<set name="zenturien" table="VeranstaltungZenturie">
<key column="VERANSTALTUNG_ID"/>
<many-to-many column="id" class = "Zenturie"/>
</set>
<set name="raeume" table="VeranstaltungRaum">
<key column="VERANSTALTUNG_ID"/>
<many-to-many column="id" class = "Raum"/>
</set>
</class>
</hibernate-mapping>
 
Das Problem hat sich von alleine erledigt. Ich weiß nicht genau woran es lag, aber nach ein paar neustarts des J-Boss-Servers war der oben beschriebene Fehler weg.
Trotzdem Danke!
 
nur als kleine erklärung noch zu dem etwas anderen dozenten objekt...

wenn du mit lazy loading arbeitest, erstellt hibernate einen stub (rumpf) welcher genau die methoden deines dozenten zur verfügung stellt, der rest den du da so siehst (CGLIB...) wurde von hibernate hinzugefügt und wird z.bsp. fürs lazy loading verwendet
das sind einfach informationen, was passiert / was geladen werden soll, wenn eine gewiese methode ausgeführt wird

also daran lags sicher nicht das deine werte null waren, dein objekt das aus der DB kommt schaut jetzt sicher noch immer so aus, nur diesmal mit werten ;)
 
Zuletzt bearbeitet:
Zurück