Désolé si cela est dupe, n'a pas pu trouver, mais ne savait pas vraiment quoi chercher, de toute façon ...Cascading in (N) Hibernate, quelles règles ai-je besoin?
J'ai trois classes, Parent
, Child
et Other
Parent
a beaucoup Child
où enfant a une colonne Parent_Id
Other
contient une référence à un Child
par une colonne Child_Id
Quand je supprimer un Parent
, je veux également supprimer tous les objets associés Child
. Si ces objets Child
sont référencés par des classes Other
, je veux que leurs références (les objets Other
) Child_Id
soient annulées.
De quelles règles en cascade ai-je besoin sur les deux relations?
NHibernate mettra également à jour les entités en mémoire ainsi que dans la base de données?
I.e. si j'ai un groupe de Parent
, Child
et Other
en mémoire (c'est-à-dire chargé à partir de db, non transitoire) et dire à NH de supprimer Parent
, que va-t-il se passer? Je suppose que les objets Parent
et Child
deviendront transitoires? Qu'adviendra-t-il de la propriété Child
de tous les objets Other
? Edit: lorsque vous utilisez All-Delete-Orphan, que classe un objet comme un orphelin? Dans l'exemple ci-dessus, un Child
est-il orphelin si son parent Parent
est supprimé? La référence de Other
est-elle importante lorsqu'on considère une entité comme orpheline?
Merci
Merci pour la clarification.Si j'avais un un-à-plusieurs de «Enfant» à «Autre», je pourrais mettre en cascade à enregistrer-mise à jour et cela me donnerait la fonctionnalité que j'avais besoin, non? sauf que je ne veux pas avoir une relation bidirectionnelle, je veux seulement pouvoir aller de 'Other' à' Child', pas l'inverse. –
Je ne voudrais pas sauvegarder-mettre à jour Autre parce que vous enregistrez l'enfant. En supposant que l'Autre est une entité indépendante, créée et supprimée indépendamment de l'enfant, elle ne doit pas être créée implicitement en créant un enfant. Pour moi, c'est une bonne pratique. Je ne vois pas pourquoi vous pensez que cela résoudrait votre problème. De toute façon, vous devez supprimer la référence à l'enfant de l'Autre. Bien sûr, vous trouverez le référencement d'autres plus facile. –
hmm non vous avez raison, d'accord. cela signifie-t-il que j'ai besoin de charger tous les 'Other's dans la mémoire, puis annuler leurs références' Child'? semble cher: s –