-->
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.  [ 2 posts ] 
Author Message
 Post subject: m:m-Problem:Einträge in Zwischentabelle werden überschrieb
PostPosted: Tue May 23, 2006 7:38 am 
Newbie

Joined: Tue May 23, 2006 7:15 am
Posts: 1
Hallo,

ich bin Hibernateanfänger und arbeite als Praktikantin an einem Projekt mit Hibernate, Spring und JSF. Nun zu meinem Problem.

Es gibt Tests und Kapitel(Section). Ein Kapitel soll in mehreren Tests verfügbar sein.
Ein Test soll mehrere Kapitel haben. Also eine many-to-many-Beziehung

Ich habe es so programmiert:

Klasse Test
Code:
public class Test {
...
private Set sections = new LinkedHashSet();
...
}


(mit Getter und Setter für das Sectionsset)

analog dazu die Sectionklasse (Kapitel).

Die Mappings sehen so aus:

Section.hbm.xml:
Code:
<set name="tests" table="test_section" lazy="false" inverse="true" cascade="save-update">
            <key column="section_id"/>
            <many-to-many column="test_id" class="Test"/>
</set>


Test.hbm.xml
Code:
<set name="sections" table="test_section" lazy="false" cascade="save-update">
          <key column="test_id"/>
           <many-to-many column="section_id" class="Section"/>
</set>


Somit sollen in einer Zwischentabelle test_section die jeweiligen Id´s gespeichert werden. Das werden sie auch, jedoch wird bei jedem Speichern eines Kapitels die alte Beziehung überschrieben.
Aber warum?
Code:
cascade="save-update"
bedeutet doch, daß entweder neu gespeichert, falls es den Eintrag noch nicht gibt oder der Eintrag überschrieben wird (geupdatet wird).

Vielen Dank für jede Hilfe!


Top
 Profile  
 
 Post subject:
PostPosted: Mon May 29, 2006 11:53 am 
Beginner
Beginner

Joined: Fri May 19, 2006 11:34 am
Posts: 29
Das cascade bezieht sich nur auf neue Objekte in der Beziehung.

Bsp.

Du hast Kapitel 1 und Sektionen a und b. Die bestehen schon in deiner DB.
Jetzt kannst du ohne Probleme die Beziehung zwischen dem Kapitel 1 und den Sektionen a und b herstellen.
Sofern du jedoch erst eine neue Sektion c erzeugst, dazu eine Relation zwischen 1 und c und dann 1 speicherst, wird nicht die Sektion c gespeichert, und damit auch nicht deine Relation zwischen 1 und c. Du müsstest Kapitel 1 mit der neuen Relation und die Sektion c getrennt in 2 sessions speichern.

Probiere doch einfachheithalber das Attribut "all" am cascade.

Die Bedeutungen der csacade-Attribute hab ich leider auch noch nicht gefunden.

Viele Grüsse
Kai


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.