Bonjour à tous,
J'ai une table "shares" et une tables "Sharesgroups" dans ma base de données mysql, un share peut etre dans au minimum 0 share group et au maximum 1 fois (0,1), alors qu'un share group contient au minimum 0 share et au maximum une multitude de shares (0,n).
Le format de mes tables sont donc :
Et voici les fichiers de mapping correspondant :
create table SHARES
(
ID_SHARE int not null auto_increment,
ID_SHARE_GROUP int default null,
primary key (ID_SHARE)
);
create table SHARESGROUPS
(
ID_SHARE_GROUP int not null auto_increment,
primary key (ID_SHARE_GROUP)
);
alter table SHARES
add constraint FK_GROUP_CONTAINS foreign key (ID_SHARE_GROUP) references SHARESGROUPS (ID_SHARE_GROUP)
on delete cascade on update cascade;
J'aimerai ajouter des shares au share group de cette facon :
Pour la classe Sharesgroups :
<hibernate-mapping package="org.nasr.database">
<class
name="Sharesgroups"
table="sharesgroups"
>
<meta attribute="sync-DAO">false</meta>
<id
name="Id"
type="integer"
column="ID_SHARE_GROUP"
>
<generator class="increment"/>
</id>
<set name="Shares" inverse="true">
<key column="ID_SHARE_GROUP"/>
<one-to-many class="Shares"/>
</set>
</class>
</hibernate-mapping>
# Pour la classe Shares :
<hibernate-mapping package="org.nasr.database">
<class
name="Shares"
table="shares">
<meta attribute="sync-DAO">false</meta>
<id
name="Id"
type="integer"
column="ID_SHARE"
>
<generator class="increment"/>
</id>
<many-to-one
name="IdShareGroup"
column="ID_SHARE_GROUP"
class="Sharesgroups"
not-null="false"
>
</many-to-one>
</class>
</hibernate-mapping>
Mais l'update ne procède à aucun delete/update...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sharesgroups shareGrp = (Sharesgroups)hibSession.load(Sharesgroups.class, idShareGrp); Set<Shares> s_share = new HashSet<Shares>(); Shares share = (Shares)hibSession.load(Shares.class, Integer.parseInt(IdShare); s_share.add(share); shareGrp.setShares(s_share); hibSession.update(shareGrp);
Je ne comprends pas car j'ai le meme exemple avec 2 tables liés en many-to-many, donc 3 tables, une pour un "Utilisateur", une autre pour un "groupeutilisateur" et la dernière "Userlinkgroup" reprenant en clés primaires étrangères les clés de "Utilisateur "et "groupeutilisateur".
Pour ce dernier exemple je peux faire un :
groupeutilisateur.setUtilisateur(null) et hibernate va me vider la table userlinkgroups pour ce groupe d'utilisateur...
J'aimerai faire la meme chose pour mon sharegroup, seulement il ne procède à aucun delete update, alors je me disais que ca venait peut etre du fait qu'il n'y est pas de table de jointure, mais ca m'embete un peu de créer une table de jointure juste pour hibernate.
Deplus mes fichiers de mapping on été généré avec hibernate synchronizer alors je ne comprends pas pourquoi la méthode "setShares" me serait proposé dans ma classe Sharesgroups si hibernate ne gère pas ca SANS table de jointure externe...
Merci
Partager