Hibernate: La fusion fonctionnera-t-elle avec plusieurs objets de manière transversale?
-
28-10-2019 - |
Question
Salut, je le sais et testé avant la fusion, il reatta l'objet à la session Empêcher une exception d'initialisation paresseuse lorsque l'objet n'est plus en session.
a.) J'ai donc quelques questions.
Si je paie -> le client (dans une relation unidirectionnelle de plusieurs à un) et je le fais
Paiement Paiement = Payment.Class.cast (Session.Merge (OldPayment));
L'objet client sera-t-il également Rattach en session, ou dois-je faire un autre appel de fusion pour le client.
b.) Que se passe-t-il si le paiement -> Client (relation bidirectionnelle de plusieurs à un). Que se passerait-il que.
c.) Que diriez-vous si j'ai une relation de plus de trois hiérarchies.
Exemple: Hôtel -> Paiement -> Client.
Si je fais un hôtel hôtelier = hôtel.class.cast (session.merge (Unmergehotel)), le paiement et l'objet client seront-ils également fusionnés en session?
Merci
La solution
Il est défini par les options en cascade de vos relations.
- Si la relation est configurée aux opérations de fusion en cascade, les entités référencées par l'entité fusionnée seront également fusionnées, de sorte que les modifications apportées à ces entités avant la fusion seront propagées à la base de données.
- Sinon, ces entités seront rechargées à partir de la base de données, donc toutes les modifications apportées à ces entités avant la fusion seront rejetées.
- Les relations paresseuses non initialisées sont ignorées.
EXCEPRT connexe de la spécification JPA (je suppose Session
L'interface offre la même sémantique):
- Pour toutes les entités, y référencé par les relations de X ayant la valeur de l'élément en cascade
cascade=MERGE
oucascade=ALL
, Y est fusionné récursivement comme y '. Pour tous ces y référencés par x, x 'est défini pour référence à y'. (Notez que si x est géré, alors x est le même objet que x '.)- Si x est une entité fusionnée à x ', avec une référence à une autre entité y, où
cascade=MERGE
oucascade=ALL
n'est pas spécifié, puis la navigation de la même association à partir de x «donne une référence à un objet géré y» avec la même identité persistante que Y.Le fournisseur de persistance ne doit pas fusionner les champs marqués paresseux qui n'ont pas été récupérés: il doit ignorer de tels champs lors de la fusion.
Voir également: