Bonjour tout le monde,
Voila j'ai une classe "Acteur" qui a un deux collections (membres et structures) issues d'une asso reflexive 'many-to-many'.
Pour plus de clareté, voici le mapping de cette classe :
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 <meta attribute="sync-DAO">false</meta> <id name="id" type="integer" column="id"><generator class="native"/></id> <property name="nom" column="nom" type="string" not-null="false" length="30" /> <property name="adrs" column="adrs" type="string" not-null="false" /> <property name="cp" column="cp" type="string" not-null="false" length="6" /> <property name="ville" column="ville" type="string" not-null="false" length="100" /> <property name="pays" column="pays" type="string" not-null="false" length="100" /> <property name="tel1" column="tel1" type="string" not-null="false" length="10" /> <property name="tel2" column="tel2" type="string" not-null="false" length="10" /> <property name="email" column="email" type="string" not-null="false" length="100" /> <set name="structures" table="participe"> <key column="id_membre" /> <many-to-many column="id_structure" class="Acteur" /> </set> <set name="membres" table="participe" inverse="true"> <key column="id_structure" /> <many-to-many column="id_membre" class="Acteur" /> </set> <set name="contextes"> <key column="id_acteur"/> <one-to-many class="Contexte"/> </set>
J'arrive à ajouter des membres à une structure, récupérer les membres d'une structure, etc... et inversement.
Mon problème apparaît lorsque je cherche à enlever un membre d'une structures!?
J'ai essayé différentes choses :
public static void delMembreToStruct(int idStructure, int idMembre) {
ou encore :
ainsi que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Session session = HibernateUtil.currentSession(); Transaction trx = session.beginTransaction(); /* Acteur unMembre = (Acteur) session .createQuery("select a from Acteur a left join fetch a.structures where a.id = :idMembre") .setParameter("idMembre", idMembre) .uniqueResult(); */ Acteur unMembre = (Acteur) session.load(Acteur.class, idMembre); Acteur uneStructure = (Acteur) session.load(Acteur.class, idStructure); uneStructure.getMembres().clear(); session.update(uneStructure); trx.commit(); }
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 public static void delMembreToStruct(int idStructure, int idMembre) { Session session = HibernateUtil.currentSession(); Transaction trx = session.beginTransaction(); /* Acteur unMembre = (Acteur) session .createQuery("select a from Acteur a left join fetch a.structures where a.id = :idMembre") .setParameter("idMembre", idMembre) .uniqueResult(); */ Acteur unMembre = (Acteur) session.load(Acteur.class, idMembre); Acteur uneStructure = (Acteur) session.load(Acteur.class, idStructure); uneStructure.getMembres().remove(unMembre); session.saveOrUpdate(unMembre); trx.commit(); }Je ne comprends pas ce que je loupe!?
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 public static void delMembreToStruct(int idStructure, int idMembre) { Session session = HibernateUtil.currentSession(); Transaction trx = session.beginTransaction(); /* Acteur unMembre = (Acteur) session .createQuery("select a from Acteur a left join fetch a.structures where a.id = :idMembre") .setParameter("idMembre", idMembre) .uniqueResult(); */ Acteur unMembre = (Acteur) session.load(Acteur.class, idMembre); Acteur uneStructure = (Acteur) session.load(Acteur.class, idStructure); trx.commit(); uneStructure.getMembres().remove(unMembre); Session session2 = HibernateUtil.currentSession(); Transaction trx2 = session.beginTransaction(); session2.update(unMembre); trx2.commit(); }
Merci d'avance!
Partager