Hibernate: ¿Funcionará la fusión con un objeto de gran a uno de manera transitiva?
-
28-10-2019 - |
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
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
ocascade=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=MERGE
ocascade=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: