Modifier un attribut représentant une autre classe
J'ai une entité ProjectIdea qui peut avoir plusieurs genres.
J'ai donc deux classes qui possedent chacunes un attribut annoté ManyToMany qui représente la liste des objets avec lesquels ils sont reliés.
voici le code simplifié.
Classe ProjectIdea
Code:
1 2 3 4 5 6 7 8 9
|
protected Set<IdeaKind> ideaKinds;
@ManyToMany
public Set<IdeaKind> getIdeaKinds() {
return ideaKinds;
}
public void setIdeaKinds(Set<IdeaKind> ideaKinds) {
this.ideaKinds = ideaKinds;
} |
Classe IdeaKind (genre de l'idée)
Code:
1 2 3 4 5 6 7 8 9
|
private Set<ProjectIdea> projectIdeas;
@ManyToMany(mappedBy = "ideaKinds")
public Set<ProjectIdea> getProjectIdeas() {
return projectIdeas;
}
public void setProjectIdeas(Set<ProjectIdea> projectIdeas) {
this.projectIdeas = projectIdeas;
} |
J'aimerai ajouter une "ideaKind" a un "ProjectIdea". J'ai essayé ceci :
Code:
1 2 3 4 5 6 7 8
|
ProjectIdea pi = (ProjectIdea)(em.find(ProjectIdea.class, Long.parseLong("1")));//je récupere celui d'id=1
em.persist(pi);
IdeaKind ik = (IdeaKind)(em.find(IdeaKind.class, Long.parseLong("1")));//je récupere celui d'id=1
em.persist(ik);
pi.getIdeaKinds().add(ik); |
Seulement cela n'a aucun effet sur ma table générée automatiquement et qui représente la jointure entre les ProjectIdea et les IdeaKind.
Comment cela se fait il ?
P.S: j'ai le meme probleme avec une relation OneToMany et ManyToOne