Bonjour à tous,
Toujours avec mes tables 'Users' et 'Groups'. J'ai un problème de synchronisation entre la collection des membres et la base.
Le comportement est bizarre car ca marche lors du premier test et échoue au second alors que les tables sont vidées à chaque test et que la session a obligatoirement été rélancée.
Le problème survient lorsque j'ajoute un utilisateur à un groupe. L'utilisateur est bien ajouté à la collection mais cela ne fait pas l'insertion dans la base (j'ai vérifié les logs).
Après cela, je lance une requete HSQ pour récupérer les membres du groupe concerné et là, aucun utilisateur n'est listé, normal puisque l'insertion n'a pas été effectuée.
Donc, pourquoi l'insertion liée à la collection n'est pas faite.
Hibernate version: 3.1.1
Mapping documents:
Le groupe :
Code:
<class name="GroupBMP" table="GROUPS" node="group">
<cache usage="read-write"/>
<id name="primaryKey" column="group_id" type="java.lang.String" node="@group_id"/>
...
<set name="members" table="GROUP_MEMBERS" cascade="persist,save-update" lazy="true" node="members" embed-xml="false" fetch="select">
<key column="group_id"/>
<element column="user_id" type="java.lang.String"/>
</set>
</class>
L'utilisateur et la requête concernée :
Code:
<class name="UserBMP" table="USERS" node="user">
<cache usage="read-write"/>
<id name="primaryKey" column="user_id" type="java.lang.String" node="@user_id"/>
...
<set name="groups" table="GROUP_MEMBERS" fetch="select" lazy="true" embed-xml="false" cascade="persist,save-update" inverse="true">
<key column="user_id"/>
<element column="group_id" type="java.lang.String"/>
</set>
</class>
<query name="user.findByGroup">select distinct primaryKey from UserBMP where groups.id = ? order by user_id</query>