2013-05-09 13 views
5

Utilizzo di JPA Ho una domanda relativa ai CascadeTypes.JPA CascadeType priorità?

per esempio:

@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) 

è diverso a questo:

@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) 

Perché? Ho bisogno che il persistente cascadetype inserisca automaticamente oggetti di riferimento nella mia classe di entità . e ho bisogno di unire perché non voglio avere doppie voci nelle mie tabelle . ma quando definisco persistono prima, la fusione non funziona, quando definisco prima , persist non funziona.

perché?

+2

L'ordine non dovrebbe importare. O il tuo provider ha un problema, che non dovrebbe essere se è conforme a JPA, o c'è un problema con la struttura dell'entità che stai chiamando persistere o unire. Puoi pubblicare quello che stai facendo? – Chris

+1

quale fornitore JPA stai attualmente utilizzando? – blitzen12

risposta

1

La specifica JPA è in realtà un documento molto leggibile e può essere scaricato qui:

https://jcp.org/aboutJava/communityprocess/final/jsr317/index.html

suo interno a pagina 384 che copre l'attributo cascade del ManyToMany della nota:

Il elemento cascade specifica il set di operazioni a cascata che vengono propagate all'entità associata. Le operazioni che sono cascadable sono definite dall'enumerazione CascadeType: public enum CascadeType {ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH}; Il valore cascade = ALL è equivalente a cascade = {PERSIST, MERGE, REMOVE, REFRESH, DETACH}.

Come potete vedere, non dice nulla sull'ordine. Quello che probabilmente sta accadendo è che la tua applicazione a volte usa un nuovo oggetto che deve essere persistente e talvolta caricarne uno dal database che poi deve essere unito. Nelle parole ordine, è un problema di applicazione.

Personalmente utilizzo un approccio DIY per unire le entità nel mio contesto di persistenza. Un buon articolo da leggere su questo argomento è qui:

http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/