Die einzelnen CascadeType-Beschreibungen können etwas verwirrend sein, aber es gibt eine einfache Möglichkeit, dies anhand des allgemeinen Falls herauszufinden.
Für jeden der CascadeType
Werte bedeutet dies, dass die Operation auch auf diese zugeordnete Entität angewendet wird , wenn eine Operation X
über die EntityManager
Schnittstelle für eine Instanz aufgerufen wird und diese Instanz Verweise auf andere Entitätsinstanzen hat und diese Zuordnung CascadeType.X
definiert hat EntityManager
.
Also EntityManager.refresh()
ist definiert als:
Aktualisieren Sie den Status der Instanz aus der Datenbank und überschreiben Sie gegebenenfalls an der Entität vorgenommene Änderungen.
Wenn also Entität A einen Verweis auf Entität B hat und dieser Verweis mit Anmerkungen versehen @CascadeType.REFRESH
und EntityManager.refresh(A)
aufgerufen wird, EntityManager.refresh(B)
wird er implizit auch aufgerufen.
Abrufen durch Aktualisieren: Verwaltete Objekte können mithilfe der Aktualisierungsmethode aus der Datenbank neu geladen werden:
Der Inhalt des verwalteten Objekts im Speicher wird verworfen (einschließlich etwaiger Änderungen) und durch Daten ersetzt, die aus der Datenbank abgerufen werden. Dies kann hilfreich sein, um sicherzustellen, dass die Anwendung die aktuellste Version eines Entitätsobjekts verarbeitet, nur für den Fall, dass es seit dem Abrufen von einem anderen EntityManager geändert wurde.
Quelle: http://www.objectdb.com/java/jpa/persistence/retrieve
quelle