Bonjour,

Voilà j'ai un gros soucis lors de la suppression d'un objet en base.
Je m'explique, j'ai une relation N-N entre deux tables cette relation N-N est représenté par une cim, cette cim est directement mappé avec une classe du même nom.

Mais cette classe(utilisateurProfil) 'cim' référence une autre classe utilisateurProfilId qui elle même contient les références vers les objet Utilisateur et profil.

Voici un extrait du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<hibernate-mapping>
    <class name="com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfil" table="utilisateur_profil">
        <composite-id name="utilisateurProfilId" class="com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfilId">
            <key-many-to-one name="profil" class="com.teamlog.eloi.model.domaine.profil.Profil">
                <column name="PROFIL_ID" />
            </key-many-to-one>
            <key-many-to-one name="utilisateur" class="com.teamlog.eloi.model.domaine.utilisateur.Utilisateur">
                <column name="UTILISATEUR_ID" />
            </key-many-to-one>
        </composite-id>
    </class>
</hibernate-mapping>
UtilisateurProfilId.java :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
 
	// Fields
 
	private Profil profil;
	private Utilisateur utilisateur;
 
	// Constructors
 
	/** default constructor */
	public AbstractUtilisateurProfilId() {
	}
 
	/** full constructor */
	public AbstractUtilisateurProfilId(Profil profil, Utilisateur utilisateur) {
		this.profil = profil;
		this.utilisateur = utilisateur;
	}
 
	// Property accessors
 
	public Profil getProfil() {
		return this.profil;
	}
 
	public void setProfil(Profil profil) {
		this.profil = profil;
	}
 
	public Utilisateur getUtilisateur() {
		return this.utilisateur;
	}
 
	public void setUtilisateur(Utilisateur utilisateur) {
		this.utilisateur = utilisateur;
	}
	@Override
	public boolean equals(Object arg0) {
		// TODO Auto-generated method stub
		return super.equals(arg0);
	}
 
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return super.hashCode();
	}
UtilisateurProfilId.java :
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
 
public class UtilisateurProfil extends AbstractUtilisateurProfil implements
		java.io.Serializable {
 
	// Constructors
 
	/** default constructor */
	public UtilisateurProfil() {
	}
 
	/** full constructor */
	public UtilisateurProfil(UtilisateurProfilId id) {
		super(id);
	}
 
	public List findAllElementsByUtilisateurId(Long utilisateurId){
		List<UtilisateurProfil> listUtilisateurProfil = (List) ((UtilisateurProfilDAO)this.getDAO()).findAllElementsByUtilisateurId(utilisateurId);
		return listUtilisateurProfil;
	}
 
}
Mais voilà j'arrive à récup. le UtilisateurProfil avec son UtilisateurProfilId, j'arrive à y faire des manip mais impossible de le delete....

voici l'éxception :

ERROR [2008-12-24 14:47:43,984]: ServiceExceptiona different object with the same identifier value was already associated with the session: [com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfil#com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfilId@352b57]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfil#com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfilId@352b57] [com.teamlog.eloi.facade.authentification.AuthentificationFacade] [updateRelationProfilUtilisateur() 132]
com.teamlog.fwk.core.service.ServiceException: a different object with the same identifier value was already associated with the session: [com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfil#com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfilId@352b57]; nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfil#com.teamlog.eloi.model.domaine.utilisateur.profil.UtilisateurProfilId@352b57]
at com.teamlog.eloi.service.utilisateur.profil.UtilisateurProfilService.deleteUtilisateurProfil(UtilisateurProfilService.java:103)


J'ai cherché partout et 'ai tout essayé mais impossible de trouver la solution....

Merci !