Quote:
Danke für den Tip. Ich habe das aber versucht und musste feststellen, dass das Speichern dann nicht funktioniert. Ich kann zwar mit zb Tag.add ein Subject zuordnen nicht aber mit subject.add(tag). Letzteres ergibt keinen Eintrag in der link-Tabelle.
Hm, da herscht noch grosser Aufklaerungsbedarf bzg. bidirectionaler ManyToMany, also Schritt fuer Schritt:
1. bei bidirectionalen ManyToMany Beziehungen MUSS UNBEDINGT eine Seite als invers deklariert werden.
Dies ist noetig um Hiberante vestehen zu geben, dass es sich bei den 2 ManyToMany Deklarationen
um ein und dieselbe Beziehung handelt !
(Ansonsten sind es fuer Hibernate 2 voneinander unabhaengige unidirectionale ToMany Beziehungen)
2. bei bidirectionalen ManyToMany Beziehungen MUESSEN beim Setzen einer Beziehung BEIDE Seiten gesetzt werden, also:
Code:
tag.add(subject) UND subject.add(tag)
Zwar ergibt sich in der Summe nur ein einziger physischer INSERT, das ist aber voellig richtig so.
Denn durch die Normalierung soll Redundanz (=doppelte Speicherung ein und derselben Information) ja bekanntlich vermieden werden.
Der physischer INSERT erfolgt dabei genaugenommen bereits durch das Setzten einer einzigen Seite (ich glaube der inverse-seite), der Hibernate-User sollte sich aber dadurch nicht verleiten lassen, das Setzen der anderen Seite zu unterlassen. Dadurch bleibt die Relation naemlich inkonsistent. Erst wenn sie neu von der Datenbank gelesen wird,
bereinigt sich die Situation. Also: bitte immer schoen brav beide Seiten setzen.