Le singole descrizioni CascadeType possono essere un po 'confuse, ma c'è un modo semplice per capirlo dal caso generale.
Per qualsiasi valore CascadeType
, significa che se l'operazione X
viene invitato un'istanza utilizzando l'interfaccia EntityManager
, e che esempio ha riferimenti ad altre istanze di entità, e che associazione ha CascadeType.X
definito, allora l'operazione EntityManager
sarà anche essere applicato a tale entità associata.
Così EntityManager.refresh()
è definito come:
aggiornare lo stato dell'istanza da database, sovrascrivendo le modifiche apportate all'entità, se presente.
Quindi, se entità A ha un riferimento a un'entità B, e che il riferimento è annotata con @CascadeType.REFRESH
, e EntityManager.refresh(A)
è chiamato, quindi EntityManager.refresh(B)
è implicitamente chiamato anche.
So che questo è un vecchio post, ma usando il tuo esempio di A e B di cui sopra, se l'istanza di B è attualmente indipendente, sarebbe un CascadeType.PERSIST causa B per diventare persistente? Sto usando l'implementazione JPA di Hibernate. – Andy
Ho risposto alla mia domanda. La risposta è no. È necessario chiamare Salva sull'oggetto affinché diventi persistente. – Andy