Hibernate bidirektionale Verkettung durchlaufen

Woocash

Grünschnabel
Moin zusammen,

ich habe ein Problem mit Hibernate und hoffe einer kann mir das Verhalten erklären. Vielleicht ist es auch nur ein Verständnisproblem.

Und zwar habe ich eine Kopf + Positionstruktur:
Code:
public class Kopf {
   private List<Position> positionen = null;
   // getter + setter Methoden
}
Code:
public class Position {
   private Kopf kopf = null;
   // getter + settter Methoden
}

Die Hibernate Mapping Files sehen wie folgt aus:
Code:
<hibernate-mapping package="my.package">
    <class table="KOPF" name="Kopf">
         <id .... ></id>
          <bag name="positionen" inverse="true" lazy="true"   fetch="select" cascade="none" >
        	<key column="FK_KOPF" />        	        
        	<one-to-many class="Position" />
        </bag>
    </class
</hibernate-mapping>

Code:
<hibernate-mapping package="my.package">
    <class table="POSITION" name="Position">
         <id .... ></id>
        <many-to-one name="kopf" class="Kopf" column="FK_KOPF" not-null="true" />
    </class
</hibernate-mapping>

Mein Verständnisproblem ist nun, wenn ich mir die Positionen lade, auf den Kopf zugreife, und von diesem wieder auf die Positionen, dann sind diese leer.

Code:
// Irgendeine Position in DB ermitteln
Position pos = this.positionDao.getByID(1);
// Kopf der Position ermitteltn
Kopf kopf = pos.getKopf();

// Alle Positionen zum Kopf ermitteln
List<Position> positionen = kopf.getPositionen();

Genau an der letzten Stelle hätte ich erwartet, dass Hibernate die Positionen ermittelt. Ich bekomme lediglich null heraus.
Aber genau das ist nicht der Fall. Ist an der Hibernate Mapping Definion etwas falsch? Oder ist so ein Ansatz gar nicht vorgesehen?

Besten Dank schonmal für jede Information.
 
Was mir vorhin auffiel. Das Verhalten tritt nur im JUNIT Test auf. Wenn ich im normalen Lauf bin, dann kann ich das genau wie eg. erwartet, die Beziehungen ermitteltn.
 

Neue Beiträge

Zurück