@ManyToOne JPA association et cascade... ne sais pas ce qui se passe si je supprime un objet
Je ne suis pas encore très clair au sujet de la façon cascade fonctionne dans les opérations de suppression. Je me demandais ce qui se passe si j'ai ceci:
class myBean{
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public Cliente getClienteDiAppartenenza() {
return clienteDiAppartenenza;
}
}
class Cliente{
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
public List<myBean> getMyBeans() {
return myBeans;
}
}
si je supprime le myBean avec cette propriété, je ne sais pas si le lié Cliente sera supprimé aussi (bizarre dans un manytoone) ou de la collection à l'intérieur Cliente sera mis à jour et que l'instance de myBean enlevé, puis enregistré.
Ce qui va arriver?? Hibernato docs ne sont pas très claires à ce sujet...
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une Hibernate chose, c'est une partie de la JPA 2.0 de la norme. Vous avez deux aspects dans votre annotations, une chose est l'utilisation de orphanRemoval.
Vous utilisez orphanRemoval lorsque l'entité mère a le contrôle sur la création et la destruction de l'entité enfant. Dans UML, ce serait un cas de composition qui est une forte appropriation et concident durée de vie des pièces par l'ensemble. La JPA 2.0 de la spécification dans la section 2.9: les Relations d'entités dit:
Un deuxième aspect, l'usage de cascase=RETIRER en cas de non orphanRemoval est implicite.
La section 3.2.3: Suppression contient des détails sur la suppression de processus:
Votre fournisseur JPA ne va pas gérer vos collections java en mémoire pour vous. Si vous avez une relation mappé dans les deux côtés, un côté doit être définie comme la propriétaire de côté à l'aide de l'attribut mappedBy dans la cartographie de la non-possession de côté. C'est à vous de décider de quel côté est le propriétaire de côté. Une fois que vous avez pris cette décision, la JPA fournisseur de garder les choses jusqu'à ce jour dans la base de données à l'aide de quelque cascade/orphelin de gestion que vous avez définies dans la cartographie, mais vous êtes de gauche pour la gestion de vos collections dans les non-possesseurs d'un côté.
Une façon de gérer cela est de disposer d'une méthode de service qui est utilisé pour faire le changement et que la méthode de service prend en charge la mise à jour de la collection ou de la référence dans votre 1-n et n-1 côté de choses afin que vos objets java sont corrects dans la mémoire.