Me gustaría hacer una copia profunda de una entidad en JPA. Encontré una discusión interesante aquí: http://forums.java.net/jive/thread.jspa?messageID=253092&tstart=0Copia profunda en JPA
Parecía que la solución propuesta era establecer todos los Id @ a cero. Aquí está mi código básico:
//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();
¿Es esta una buena estrategia? ¿Alguien podría tener este código TODO ya escrito que puedan compartir?
Gracias!
El enlace está roto. Puedes actualizarlo – Kayser
¿Estás seguro de que quieres hacer una copia profunda? Eso podría llevar a tener toda la base de datos duplicada. Preferiría seguir con la implementación de la copia: tedioso, pero podría ahorrarme un dolor de cabeza o, peor aún, un servidor que se bloquea en la producción. –