Je suis en train de rafraîchir la relation @ManyToMany mais il devient plutôt éclairci ...JPA @ManyToMany d'un seul côté?
Ma classe de projet ressemble à ceci:
@Entity
public class Project {
...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "PROJECT_USER",
joinColumns = @JoinColumn(name = "PROJECT_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
private Collection<User> users;
...
}
Mais je n'ai pas - et je ne veux pas - la collection de projets dans l'entité Utilisateur.
Lorsque je regarde les tables de base de données générées, elles semblent bonnes. Ils contiennent toutes les colonnes et les contraintes (clés primaires/étrangères).
Mais quand je persiste un projet qui a une liste d'utilisateurs (et les utilisateurs sont toujours dans la base de données), la table de mappage n'est pas mise à jour est mise à jour mais lorsque je rafraîchis le projet, la liste de Les utilisateurs sont effacés.
Pour une meilleure compréhension:
Project project = ...; // new project with users that are available in the db
System.out.println(project getUsers().size()); // prints 5
em.persist(project);
System.out.println(project getUsers().size()); // prints 5
em.refresh(project);
System.out.println(project getUsers().size()); // prints 0
Alors, comment puis-je rafraîchir la relation entre l'utilisateur et le projet?
grâce ... (em.flush) a fait l'affaire! –
On est curieux de savoir quelle est la fonctionnalité que vous essayez d'atteindre? Expérimenter avec c'est une enquête académique intéressante sur la façon dont fonctionne ORM, mais je ne sais pas pourquoi vous voulez vraiment le faire. – Affe
pour UnitTesting ... –