Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

[Duda] Método merge JPA

Un saludo quisiera solventar una duda que me surgió al estar revisando los temas de Persistencia con JPA: Hibernate, cuando revisamos el método merge esta este ejercicio:

em.getTransaction().begin();
Producto producto = em.find(Producto.class, 1l);
producto.setDescripcion(“Test 1”);
em.flush();
producto.setDescripcion(“Test 2”);
em.merge(producto);
producto.setDescripcion(“Test 3”);
em.getTransaction().commit();
em.close();

al momento de seleccionar la respuesta de ¿Qué se espera obtener?, seleccioné que se espera que:

"La entidad producto se actualizará en la base de datos con la descripción Teste 3"

porque pense que el metodo merge permitía pasar la entidad a estado managed y entonces realizar el update, sin embargo en la descripción de la respuesta menciona que:

"En el código anterior, merge acabó siendo indiferente, pues la entidad ya estaba en estado Managed."

Alguien me podría explicar ¿Por qué la entidad no pasa a detached cuando se aplica el em.flush()?

1 respuesta
solución!

*Actualización: *

He revisado varias veces la clase y con más detenimiento y he comprendido gracias a la explicación del profesor y al diagrama que presenta que con flush() no se pasa a estado detached, sino mas bien cuando se le pasa el método clear() o el método commit(), por ello la entidad al no recibir ninguno de estos métodos sigue en estado managed y el método merge no hace ninguna diferencia en el código presentado en el ejercicio, una disculpa y muchas gracias.