Bonjour,

je débute avec JPA et j'ai actuellement un petit soucis de mise à jour sur mes entités.

J'ai deux classes, une classe Utilisateur et une classe Profils :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
class Utilisateur{
   @ManyToMany(cascade = {CascadeType.ALL })
   @JoinTable(
	name="utilisateur_profil"
	, joinColumns={
			@JoinColumn(name="id_utilisateur", nullable=false)
	}
	, inverseJoinColumns={
			@JoinColumn(name="id_profil", nullable=false)
	}
   )
   private Set<Profil> profils;
 
   .................
}
 
class Profil{
    @ManyToMany(cascade = {CascadeType.ALL })
    private Set<Utilisateur> utilisateurs;
    .........
}
Si je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
Utilisateur u = UtilisateurDAO.getUtilisateur(...);
Profil p = u.getProfils(1);
 
Profil newP = ProfilDAO.getProfile(p.getID());
newP.setValue("ma nouvelle valeur");
ProfilDAO.update(newP);
J'ai bien en base le profil avec une valeur modifiée, par contre, si je refais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Profil p = u.getProfils(1);
Le profil en question n'est pas changé. Il faut que je refasse un appel au DAO de Utilisateur pour répercuter les modifications.

Est-ce possible de maintenir une cohérence entre la base et tous les objets instanciés de façon automatique avec JPA ?

Pour info, j'utilise eclipseLink comme implémentation de JPA et ma table faisant le lien entre utilisateurs et profils est nommée "utilisateur_profil".

Merci d'avance.