Pregunta

Hola, sé eso y probado antes de que la fusión vuelva a colocar el objeto a la sesión que evita la excepción de inicialización perezosa cuando el objeto ya no está en sesión.

a.) Así que tengo algunas preguntas.

Si pago-> Cliente (en una relación unidireccional de muchos a uno) y lo hago

Pago pagos = pagos.class.cast (session.merge (OldPayment));

El objeto del cliente también será reattach en la sesión, o tengo que hacer otra llamada de fusión para el cliente.

b.) ¿Qué sucede si el pago-> Cliente (relación bidireccional de muchos a uno). Lo que pasaría que.

c.) ¿Qué tal si tengo una relación de más de tres jerarquías?
Ejemplo: Hotel -> Pago -> Cliente.

Si hago hotel hotel = hotel.class.cast (session.merge (unmergehotel)), ¿el pago y el objeto del cliente también se fusionarán en la sesión?

Gracias

¿Fue útil?

Solución

Se define por las opciones en cascada de sus relaciones.

  • Si la relación está configurada para las operaciones de fusión en cascada, las entidades referenciadas de la entidad fusionada también se fusionarán, de modo que los cambios realizados a estas entidades antes de la fusión se propagarán a la base de datos.
  • De lo contrario, estas entidades se volverán a cargar de la base de datos, por lo tanto, cualquier cambio realizado a estas entidades antes de que se descarten la fusión.
  • Se ignoran las relaciones perezosas no inicializadas.

ExcEPRT relacionado de la especificación de JPA (supongo que los nativos de Hibernate Session La interfaz ofrece la misma semántica):

  • Para todas las entidades y referenciadas por relaciones de x que tienen el valor del elemento cascade cascade=MERGE o cascade=ALL, Y se fusiona recursivamente como y '. Para todas esas y referenciadas por x, x 'se establece en referencia y'. (Tenga en cuenta que si se gestiona x, x es el mismo objeto que x '.)
  • Si X es una entidad fusionada con x ', con una referencia a otra entidad y, donde cascade=MERGEo cascade=ALL no se especifica, entonces la navegación de la misma asociación de X 'produce una referencia a un objeto administrado y' con la misma identidad persistente que Y.

El proveedor de persistencia no debe fusionar los campos marcados con perezosos que no se han recuperado: debe ignorar tales campos al fusionarse.

Ver también:

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