2015-01-09 17 views
6

Ich suchte die Antwort, aber ich konnte es nicht richtig bekommen. Was ist der Unterschied zwischen CascadeType.ALL, cascade = CascadeType.REMOVE, orphanRemoval, wenn wir FetchType.EAGER auf @OneToMany Beziehung setzen? Einmal hatte ich ein Problem beim Löschen von Datensätzen. Ich habe folgendeWas ist der Unterschied zwischen CascadeType.ALL, cascade = CascadeType.REMOVE und orphanRemoval

@OneToMany(cascade = CascadeType.ALL, mappedBy = "companyEntity", fetch = FetchType.EAGER) 
Set<EmployeeEntity> employeeEntities; 

verwendet Als ich versuchte, Mitarbeiter Datensatz zu löschen, ist es nicht zeigte mir jede Ausnahme und es war nicht deleteing Rekord. Aber als ich CascadeType.ALL zu CascadeType.REMOVE änderte, dann funktionierte es. Warum funktioniert es nicht mit CascadeType.ALL eher mit CascadeType.REMOVE?

Vielen Dank für einfache Erklärung im Voraus;)

Antwort

2

This Teil Ihrer Frage erklärt.

‚OrphanRemoval = true‘ Vs ‚CascadeType.REMOVE‘

Der Unterschied zwischen den beiden Einstellungen in der Antwort ist Kind Entfernen der Sammlung Objekte aus durch Muttergesellschaft hingewiesen.

Wenn orphanRemoval = true angegeben wird, wird die entfernte Adresseninstanz automatisch entfernt. Wenn nur cascade = CascadeType.REMOVE angegeben ist, wird keine automatische Aktion ausgeführt, da das Entfernen einer Beziehung kein remove-Vorgang ist.