J'ai une relation plusieurs-à-plusieurs entre un objet persistant (récupéré par une requête) et un objet transitoire nouvellement créé (créé avec new, pas encore persistant). Ils sont reliés par une association @JoinTable, tels que:Mise à jour conjointe entre les objets transitoires et persistants?
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "adccollectiontype_cn_node_type", joinColumns = {
@JoinColumn(name = "idadccollectiontype")
}, inverseJoinColumns = {
@JoinColumn(name = "idcn_node_type")
})
et à l'autre extrémité:
@ManyToMany(mappedBy="cnNodeTypes", cascade=CascadeType.ALL)
Remarque CascadeType.ALL
.
Si je crée simplement une association entre ces deux objets en ajoutant chacun à la collection de l'autre, et persistant plus tard (un autre objet, et compter sur la cascade) alors la table de jointure n'est pas mise à jour.
Cependant, si je manuellement persist
objet transitoire avant de faire l'association, il semble fonctionner.
Maintenant, j'ai essayé de trouver quelques informations sur ce cas, pourquoi et comment cela fonctionne, mais je n'ai trouvé aucune explication. Peut-être que quelqu'un peut m'éclairer, si ce que je suppose est juste ou non, et la raison derrière cela.