-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Problem mit inverser One-to-many - Beziehung
PostPosted: Sun Sep 10, 2006 3:38 pm 
Newbie

Joined: Sun Sep 10, 2006 3:12 pm
Posts: 3
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


Top
 Profile  
 
 Post subject:
PostPosted: Sun Sep 10, 2006 3:47 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
mmh kriegt man Pickel vom Handbuch lesen?
;-)

Kapitel 6.1 zeigt auf der ersten Seite, dass man Beziehungen auf beiden Seiten setzen muss.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 11, 2006 2:50 pm 
Newbie

Joined: Sun Sep 10, 2006 3:12 pm
Posts: 3
Quote:
mmh kriegt man Pickel vom Handbuch lesen?

Hoffentlich nicht, wenn man zuviel davon liest... ;-)

Beziehungen müssen eben nicht auf beiden Seiten gesetzt werden, wenn Sie auf der einen Seite als invers gekennzeichnet werden. Aus irgendeinem Grund läuft mein Beispiel übrigens jetzt, wenn ich beide Objekte vor der Abfrage mit refresh neu lade. Ich könnte schwören, dass ich das schon diverse male ausprobiert hatte...

Trotzdem danke für die versuchte Hilfe...[/quote]


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 11, 2006 3:30 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
das ist nur teilweise richtig.

Wenn Du Deine session wegwirfst und Deine Objekte frisch aus der DB liest, dann reicht es, die Beziehung auf der Management-Seite zu setzen.
ABER Hibernate durchsucht nicht Deine Session nach Objekten, bei denen auch noch die Umkehrbeziehung gesetzt werden muss. Deswegen immer auf beiden setzen!
Sicher ist sicher.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.