per dtype java jpa

java - dtype - mappedsuperclass jpa



¿Es necesaria la fusión en JPA para las entidades adjuntas? (2)

La especificación establece que:

Si X es una entidad gestionada, la operación de combinación la ignora, sin embargo, la operación de fusión se conecta en cascada a las entidades a las que hace referencia las relaciones de X si estas relaciones se han anotado con el valor del elemento en cascade=MERGE o cascade=ALL anotación.

¿Es correcto que nunca necesito usar EntityManager#merge() , siempre y cuando solo trate con entidades administradas adjuntas ? En otras palabras, ¿llamar a merge() en una entidad administrada adjunta no tiene ningún efecto?

¿O existen circunstancias en que la fusión serviría a un propósito? Me parece que el nombre sugiere que podría usarlo para tratar con una OptimisticLockException ... :)

Edición : En términos muy simples, mi comprensión de una Entidad administrada es que las modificaciones de sus propiedades / campos se conservan en la base de datos al final de la transacción.


Muchos años después ....

Respecto a la especificación

Si X es una entidad gestionada, la operación de combinación la ignora, sin embargo, la operación de fusión se conecta en cascada a las entidades a las que hace referencia las relaciones de X si estas relaciones se han anotado con el valor del elemento en cascada cascada = MERGE o cascada = TODA anotación.

Considera esto...

  • El objeto X se administra y tiene una relación de OneToMany con el objeto Y con cascada = MERGE
  • Inicialmente, cuando se crea un objeto de tipo X, no hay una Y relacionada.
  • El objeto X se conserva.
  • Posteriormente se crea el objeto Y y se agrega una referencia a X.

Tengo entendido que una combinación es la operación correcta que debe realizarse para persistir en todos los cambios en esta etapa, por lo que en algunos casos se puede solicitar una combinación en entidades administradas.