Untergeordnetes Element vom übergeordneten Element und vom übergeordneten Element automatisch mit JPA-Anmerkungen löschen

8

Angenommen, wir haben die Objektklasse 3 Entities:

%Vor%

Wie kann ich JPA2.x (oder Hibernate) -Anmerkungen für

verwenden?
  1. Löschen Sie alle Kinder automatisch, wenn die Eltern gelöscht werden (eins zu viele)
  2. Löschen Sie das Kind automatisch aus der Kinderliste, wenn es gelöscht wird (viele zu eins)
  3. Spielzeug automatisch löschen, wenn das Kind (eins zu eins) entfernt wird

Ich verwende Hibernate 4.3.5 und mysql 5.1.30.

Danke

    
user1079877 29.05.2014, 03:36
quelle

3 Antworten

13

Wie in in diesem Artikel erläutert, ist remove Übergang des Entity-Status sollte von den Eltern zu den Kindern kaskadieren, nicht die anderen herum.

Du brauchst so etwas:

%Vor%     
Vlad Mihalcea 29.05.2014, 05:49
quelle
7

Sie sollten CascadeType.REMOVE verwenden. Dies ist eine allgemeine Anmerkung für Hibernate und JPA. Hibernate hat einen anderen ähnlichen Typ CacadeType like CascadeType.DELETE .

  1. Lösche alle Kinder automatisch, wenn Eltern löschen (eins zu viele)

    %Vor%
  2. Lösche Kind automatisch aus der Kinderliste, wenn es gelöscht wird (viele zu eins)

    %Vor%
  3. Lösche das Spielzeug automatisch, wenn das Kind (eins zu eins) entfernt wird

    %Vor%
Masudul 29.05.2014 03:39
quelle
0

orphanRemoval löscht alle verwaisten Entity Beispiel: Store (s) hat Bücher (b1, b2, b3) und b1 hat Titel (t) in diesem Fall, wenn gelöschte Geschäfte einige Bücher (b2, b3) gelöscht werden . B2 und t existieren noch. Wenn Sie " cascade= CascadeType.Remove " verwenden, speichern Sie nur (s) und alle Bücher werden gelöscht (nur "t" existiert).

%Vor%

Wenn orphanRemoval = true angegeben wird, wird die getrennte Entitätsinstanz automatisch entfernt. Dies ist nützlich, um abhängige Objekte zu bereinigen, die ohne eine Referenz von einem Eigentümerobjekt nicht existieren sollten.

Wenn nur cascade=CascadeType.REMOVE angegeben wird, wird keine automatische Aktion ausgeführt, da das Trennen einer Beziehung keine Operation zum Entfernen ist.

    
Adiya Buyantogtokh 29.05.2014 06:57
quelle