Hibernate Unidirektionale Parent / Child-Beziehung - delete () führt eine Aktualisierung der untergeordneten Tabelle durch, statt sie zu löschen

8

Wenn ich einen Datensatz aus der übergeordneten Tabelle lösche, möchte ich, dass die entsprechenden Datensätze in der untergeordneten Tabelle gelöscht werden. Wie kann ich Hibernate aus der Child-Tabelle löschen, anstatt zu versuchen, mit einer Null zu aktualisieren?

Ich verwende Hibernate 3, kann jedoch derzeit keine Anmerkungen verwenden. Ich habe unten Kopien von HBM, DAO usw. beigefügt. - Vielen Dank im Voraus

Beim Versuch, Daten aus Tabellen in der Eltern / Kind-Beziehung zu löschen, erhalte ich den folgenden Fehler:

%Vor%

Meine Tabellen sind:

Parent :

%Vor%

Kind:

%Vor%

HBM XML

%Vor%

DAO

%Vor%     
Mark Glass 18.06.2009, 14:14
quelle

2 Antworten

11

Ich habe diesen Fehler gefunden alle die Zeit.

Setzen Sie einfach eine inverse="true" auf die Beziehung und Ihr Problem wird verschwinden!

%Vor%

Im Grunde sagt die Umkehrung aus, dass das Kind ohne ein Elternteil nicht existieren kann, was dazu führt, dass der Hibernate das Kind löscht.

Nachdem Sie das gesagt haben, müssen Sie auch das Objekt "charityTransfer" aus der Sammlung des übergeordneten Elements entfernen.

    
Michael Wiles 18.06.2009, 14:24
quelle
1

(Hinweis: Dies wurde von zwei Benutzern als falsche Antwort ausgelöst).

Hibernate-Dokumente sagen, dass Sie die Schlüsselspalte einfach als not-null="true" markieren können:

%Vor%

Aus Hibernate doc für Sammlungen :

  

Wenn die Fremdschlüsselspalte einer Assoziation deklariert ist   NOT NULL, Sie müssen die Zuordnung not-null="true" deklarieren oder a verwenden   bidirektionale Zuordnung zum markierten Mapping der Sammlung   inverse="wahr". Weitere Informationen zu bidirektionalen Verknüpfungen finden Sie später   In diesem Kapitel finden Sie weitere Informationen.

Ich denke auch, dass es einen Tippfehler in Ihrem Kaskadenstil gibt ( all-delete-orphan sollte all,delete-orphan sein).

    
jjmontes 23.11.2011 14:38
quelle