J'ai un des deux catégories suivantes:joinTable est perdu
@Entity
class A {
@Id
private aId;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "AB", joinColumns = @JoinColumn(name = "aId", referencedColumnName = "aId"), inverseJoinColumns = @JoinColumn(name = "bId", referencedColumnName = "bId"))
private Set<B> bSet;
}
@Entity
class B {
@Id
private bId;
}
je charge la structure complète de l'objet d'une base de données et puis bascule dans une nouvelle transaction sur la seconde base de données de persister à nouveau la structure. Cependant, la table "AB" est laissée vide. C'est très étrange car "B" est persistant bien que je persiste seulement explicitement "A". J'ai vérifié que A-objects contient des ensembles non vides de B, donc ce n'est pas un problème. Cela me laisse avec la conclusion qu'Hibernate pense que la table "AB" devrait exister car "A" et "B" ont déjà leurs clés primaires. Y at-il un moyen de contourner cela afin que Hibernate puisse conserver la table de jointure dans la deuxième base de données?
J'ai maintenant testé ceci avec EntityManager.merge() au lieu de EntityManager.persist(), et cela fonctionne. Mais je ne suis toujours pas sûr pourquoi la persistance ne fonctionne pas ... –
Quel est le type des champs AID et BID? La façon dont vous avez posté ici entraînerait une erreur de compilation. –