-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Suppresion dans une relation many-to-many
PostPosted: Fri Sep 23, 2005 6:25 am 
Newbie

Joined: Fri Sep 23, 2005 5:10 am
Posts: 1
Bonjour a tous ,

Je travaille avec hibernate 3 sous Struts.
Mon probleme :

J'ai trois tables SP_CATEGORY, SP_CATEGORY_CHAPTER, et SP_CHAPTER.La relation entre la premiere et la troisiemme est many-to-many , et entre la premiere et la deuxiemme ansi que entre la troisiemme et la deuxiemme est aussi one-to-many.

La structure des tables est la suivante :


<hibernate-mapping default-lazy="false" package="bdd.util">
<class name="SpCategory" table="SP_CATEGORY">
<id
column="ID_CATEGORY"
length="22"
name="IdCategory"
type="integer"
>
<generator class="increment"/>
</id>
<property
column="POSITION"
length="22"
name="Position"
not-null="false"
type="integer"
/>
<property
column="NAME"
length="80"
name="Name"
not-null="true"
type="string"
/>

<set
cascade="delete-orphan"
name="SpChapterSet"
table="SP_CATEGORY_CHAPTER"
>
<key column="ID_CATEGORY"/>
<many-to-many class="SpChapter" column="ID_CHAPTER"/>
</set>
<set
cascade="delete-orphan"
name="SpRubriqueSet"
table="SP_RUBRIQUE_CATEGORY"
>
<key column="ID_CATEGORY" />
<many-to-many class="SpRubrique" column="ID_RUBRIQUE" />
</set>
</class>




<class name="SpChapter" table="SP_CHAPTER">
<id
column="ID_CHAPTER"
length="22"
name="IdChapter"
type="integer"
>
<generator class="increment"/>
</id>
<property
column="NAME"
length="80"
name="Name"
not-null="true"
type="string"
/>
<many-to-one
class="SpUser"
name="IdUser"
not-null="true"
>
<column name="ID_USER"/>
</many-to-one>

<set
cascade="delete-orphan"
name="SpCategorySet"
table="SP_CATEGORY_CHAPTER"

>
<key column="ID_CHAPTER" />
<many-to-many class="SpCategory" column="ID_CATEGORY"/>
</set>
</class>



<class name="SpCategoryChapter" table="SP_CATEGORY_CHAPTER">
<composite-id>
<key-many-to-one
class="SpCategory"
column="ID_CATEGORY"
name="IdCategory"
/>
<key-many-to-one
class="SpChapter"
column="ID_CHAPTER"
name="IdChapter"
/>
</composite-id>
</class>





</hibernate-mapping>


Quand j'ajoute un SP_CATEGORY , je precise à quel SP_CHAPTER elle appartient et la relation entre les deux s'ajoute dans la table SP_CATEGORY_CHAPTER ; mais quand je supprime un SP_CATEGORY cela entraine la suppression des SP-CHAPTER correspondant meme si ces chapitres contient d'autres categories (SP_CATEGORY). Je voudrais gerer ce probleme au noveau des fichiers HBM et non au niveau des methodes metier, mais je ne sais pas commenet faire la bonne configuration de ces fichiers (surtout au niveau des cascades)

Avez vous une idée de comment résoudre ce problème.

Salutations.

Erion


Top
 Profile  
 
 Post subject:
PostPosted: Fri Sep 23, 2005 8:04 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Deux reflexions :

- L'existence de la classe SpCategoryChapter me parait bizarre. Si tu gères cette table comme une table de jointure dans une relation many-to-many cette classe n'a pas a exister. Si tu veux avoir cette classe, pourquoi utilises tu des many-to-many et pas plutôt des many-to-one en passant par cette classe

- Je ne pense pas que ce que tu souhaites faire soit faisable au niveau des hbm. Si je comprends bien tu veux faire un double cascade dans les deux sens : ce qui veut dire que si tu supprimes une catégorie tu supprimes tous les chapitres auxquels elle appartient ce qui a pour effet de supprimer toutes les catégories de tous ces chapitres puis tous les chapitres de ces catégories et ainsi de suite. Il me semble plutôt que c'est une règle métier qui doit se coder dans une classe métier

_________________
Seb
(Please don't forget to give credits if you found this answer useful :)


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.