Hallo,
ich habe an einer Klasse (A) eine inverse One-to-many Beziehung definiert:
Code:
<set name="localSlots" inverse="true">
<key>
<column name="fk_A" />
</key>
<one-to-many class="B" />
</set>
Diese ist auf der Gegenseite (B) so definiert:
Code:
<many-to-one name="ontobj" class="A" fetch="select">
<column name="fk_A" not-null="true" />
</many-to-one>
Wenn ich nun einen zwei Objecte A1 und A2 der Klasse A anlege und diesen jeweils ein Objekt der Klasse B (B1 und B2) zuweise, dann wird in der Datenbank alles korrekt abgelegt.
Code:
A a1 = new A();
s.save(a1);
A a2 = new A();
s.save(a2);
B b1 = new B();
b1.setOntobj(a1);
s.save(b1);
B b2 = new B();
b2.setOntobj(a2);
s.save(b2);
s.flush();
System.out.println(a1.getLocalSlots());
System.out.println(a2.getLocalSlots());
Im Set am Objekt A1 erscheint auch das Objekt B1, an A2 fehlt jedoch B2, obwohl der Verbindung korrekt in der DB eingetragen ist. Auch mit flush/refresh/merge/etc. konnte ich mir nicht helfen. Nur ein commit und ein neues Laden des Objektes A2 in einer neuen Transaktion führt zur korrekten Anzeige.
Hat jemand etwas Vergleichbares schon einmal erlebt oder sonst eine Idee hierzu? Ich bin verzweifelt und für jede Hilfe dankbar...
Ciao,
Tiberius