Pregunta

¿Qué hace realmente el CascadeType.REFRESH ?

La definición para ello es

  

Cuando actualizamos una entidad, todas las entidades que se encuentran en este campo también se actualizan

pero, ¿qué significa esto en la práctica? ¿Podría alguien darme un ejemplo simple?

¿Fue útil?

Solución

Las descripciones individuales de CascadeType pueden ser un poco confusas, pero hay una manera fácil de averiguarlo a partir del caso general.

Para cualquiera de los valores de CascadeType , significa que si se llama a la operación X en una instancia mediante la interfaz EntityManager , y esa instancia tiene referencias a otras instancias de la entidad, y esa asociación tiene CascadeType.X definido, entonces la operación EntityManager también se aplicará a esa entidad asociada.

Entonces EntityManager.refresh () se define como:

  

Actualizar el estado de la instancia desde   La base de datos, sobrescribiendo los cambios realizados.   a la entidad, en su caso.

Entonces, si la entidad A tiene una referencia a la entidad B, y esa referencia se anota con @ CascadeType.REFRESH , y se llama EntityManager.refresh (A) , entonces EntityManager.refresh (B) también se llama implícitamente.

Otros consejos

Recuperación por actualización: Los objetos gestionados se pueden volver a cargar desde la base de datos utilizando el método de actualización:

El contenido del objeto administrado en la memoria se descarta (incluidos los cambios, si corresponde) y se reemplaza por los datos que se recuperan de la base de datos. Esto podría ser útil para asegurar que la aplicación se ocupe de la versión más actualizada de un objeto de entidad, en caso de que haya sido cambiado por otro EntityManager desde que se recuperó.

Fuente: http://www.objectdb.com/java/jpa/persistence/ recuperar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top