Vorrei fare una copia profonda di un'entità in JPA. Ho trovato una discussione interessante qui: http://forums.java.net/jive/thread.jspa?messageID=253092&tstart=0Deep Copy in JPA
Sembrava che la soluzione proposta fosse quella di impostare tutti gli @ Id a zero. Ecco il mio codice di base:
//Start a JPA session.
EntityManager em= emf.createEntityManager();
em.getTransaction().begin();
//Get the object I want to copy.
MyClass myObject=em.find(MyClass.class,id);
//Use reflection to find @Id's and set them to zero for all @OneToMany and @OneToOne relations.
//TODO: write the ugly recursive code to do this.
//Hoping this will create a deep copy.
em.merge(myObject);
//Close the session.
em.getTransaction().commit();
em.close();
È una buona strategia? Qualcuno potrebbe avere già scritto questo codice TODO che può condividere ???
Grazie!
Il legame è rotto. Puoi aggiornarlo. – Kayser
Sei sicuro di voler fare una copia profonda? Ciò potrebbe portare a duplicare l'intero database. Preferisco attenermi all'attuazione della copia - noioso, ma potrei salvarmi un mal di testa o peggio, un server che si blocca in produzione. –