Ich habe 4 Entitäten:
Profil mit Beziehung zu companyContract:
%Vor%CompanyContract: , die eine Beziehung mit der Arbeitszeittabelle haben:
%Vor%Arbeitszeittabelle mit Beziehung zur Rechnung:
%Vor%Rechnung:
%Vor%So wie Sie hier sehen können, verwende ich org.hibernate.annotations.CascadeType.DELETE_ORPHAN , damit ich die Childs eines Elternteils löschen kann.
Wenn ich das ausfühle:
%Vor%--- & gt; Die Reihenfolge der Entfernung sollte sein:
Rechnungen entfernen - & gt; Arbeitszeittabellen - & gt; CompanyContract, Nein?
Und stattdessen bekomme ich diesen Fehler:
org.hibernate.exception.ConstraintViolationException: Die Spalte 'IDCONTRACT' darf nicht null sein
Und ich habe überprüft, dieser Fehler tritt nach profileService.updateProfile(p);
Das Problem scheint zu sein, dass die Spalte IDCONTRACT
in der Tabelle, die Arbeitszeittabellen enthält, eine NOT NULL
Einschränkung hat. Entfernen Sie es und versuchen Sie es erneut.
Wenn Sie das Schema automatisch generieren, versuchen Sie, @Basic(optional = true)
zu Timesheet.companyContract hinzuzufügen:
Das funktioniert ganz gut. Ich sehe, dass alle verbundenen untergeordneten Entitäten erfolgreich gelöscht werden.
Überprüfen Sie den folgenden Code.
Verwende orphanRemoval = true wie unten statt veraltet
org.hibernate.annotations.CascadeType.DELETE_ORPHAN
, die Sie verwenden.
Code unten finden
%Vor%