Hallo,
ich habe ein kleines Hibernate Problem.
Ich habe eine Klasse, die ein Set von sich selber hat, welches über eine many-to-many Beziehung abgeildet werden.
Code:
<set name="levels" table="TOPSTRUCT_SUBSTRUCT" cascade="all" lazy="false">
<key column="TopStruct"/>
<many-to-many
column="SubStruct"
class="database.Structure"/>
</set>
Diese Structure wird nun aus der Datenbank geladen und kann mittels einer GUI verändert werden. Ist dies geschehen soll die veränderte Structure in der Datenbank gespeichert werden. Hierzu ziehe ich mir die alte Structure aus der DB und versuche mittels merge die alte Structure zu überschreiben.
Code:
alteStructure = neueStructure;
session.merge(alteStructure);
Wurde nun eine SubStructure gelöscht, so nimmt Hibernate den den Verweis aus der Tabelle "TOPSTRUCT_SUBSTRUCT" heraus, löscht aber nicht den entsprechnenden Eintrag aus der Tabelle in der die Structuren gespeichert werden. Somit habe ich eine Structure gespeichert, die gar nicht mehr über die Tabelle "TOPSTRUCT_SUBSTRUCT" referenziert ist.
Wieso löscht Hibernate nicht die Structure mit obwohl es den Eintrag aus der "TOPSTRUCT_SUBSTRUCT" Tabelle entfernt? Ich habe doch beim mapping cascade="all" angegeben und dachte, das Hibernate merkt, das es keine Existenzberechtigung mehr für die Structure gibt.
Vielleicht kann mir ja einer weiterhelfen.