Domanda

Cosa fa effettivamente il CascadeType.REFRESH ?

La definizione è

  

Quando aggiorniamo un'entità, anche tutte le entità contenute in questo campo vengono aggiornate

ma cosa significa in pratica? Qualcuno potrebbe darmi un semplice esempio?

È stato utile?

Soluzione

Le singole descrizioni di CascadeType possono essere un po 'confuse, ma c'è un modo semplice per capirlo dal caso generale.

Per uno qualsiasi dei valori CascadeType , significa che se l'operazione X viene chiamata su un'istanza utilizzando l'interfaccia EntityManager e tale istanza ha riferimenti ad altre istanze di entità e tale associazione ha CascadeType.X definito, quindi l'operazione EntityManager verrà applicata anche a quell'entità associata.

Quindi EntityManager.refresh () è definito come:

  

Aggiorna lo stato dell'istanza da   il database, sovrascrivendo le modifiche apportate   all'entità, se presente.

Quindi se l'entità A ha un riferimento all'entità B e quel riferimento è annotato con @ CascadeType.REFRESH e EntityManager.refresh (A) viene chiamato, allora EntityManager.refresh (B) è implicitamente chiamato anche.

Altri suggerimenti

Recupero per aggiornamento: Gli oggetti gestiti possono essere ricaricati dal database utilizzando il metodo di aggiornamento:

Il contenuto dell'oggetto gestito in memoria viene scartato (incluse eventuali modifiche) e sostituito da dati recuperati dal database. Ciò potrebbe essere utile per garantire che l'applicazione gestisca la versione più aggiornata di un oggetto entità, nel caso in cui sia stata modificata da un altro EntityManager da quando è stata recuperata.

Fonte: http://www.objectdb.com/java/jpa/persistence/ recuperare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top