-->
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.  [ 3 posts ] 
Author Message
 Post subject: mapping sur une table plusieurs-plusieurs-plusieurs
PostPosted: Mon Jul 06, 2009 7:22 am 
Beginner
Beginner

Joined: Fri May 23, 2008 4:37 am
Posts: 25
Bonjour à tous,

J'ai la table suivante :
Code:
CREATE TABLE teachers_courses_classes (
    teacher INTEGER NOT NULL,
    course  INTEGER NOT NULL,
    class   INTEGER,
    CONSTRAINT UN_teachers_courses_classes_course_class UNIQUE (course, class),   
    CONSTRAINT UN_teachers_courses_classes_teacher_course_class UNIQUE (teacher, course, class),   
    CONSTRAINT FK_teachers_courses_classes_teachers_teacher FOREIGN KEY (teacher) REFERENCES teacher (uid),
    CONSTRAINT FK_teachers_courses_classes_teachers_courses FOREIGN KEY (course) REFERENCES courses (id),
    CONSTRAINT FK_teachers_courses_classes_teachers_classes FOREIGN KEY (class) REFERENCES classes (id)
);


Dans laquelle, je peux avoir plusieurs lignes pour le même enseignant (si il donne plusieurs cours) et plusieurs ligne pour la même classe (si elle comporte plusieurs cours)

Je me retrouve donc avec des lignes comme :
Quote:
prof 0; cours 4; classe 56
prof 0; cours 4; classe 57
prof 0; cours 5; classe 56
prof 1; cours 5; classe 57
prof 1; cours 7; classe 57



Jusque la tout est normal. Mais avec le mapping suivant :
Code:
<bag name="classes" lazy="false" table="teachers_courses_classes">
         <key column="teacher"/>         
         <many-to-many column="class"
            class="be.gervaisb.ages.SchoolClass" />
      </bag>


J'obtiens une collection de classe dans laquelle se trouve des doublons étant donné qu'il y à plusieurs fois l'association entre une prof et une classe.

L'ideal serais de grouper en prenant en compte la clef du cours mais je ne vois pas comment signaler celà dans mon mapping.

Merci pour votre aide.


Top
 Profile  
 
 Post subject: Re: mapping sur une table plusieurs-plusieurs-plusieurs
PostPosted: Thu Jul 09, 2009 10:55 am 
Newbie

Joined: Wed Jul 01, 2009 6:38 am
Posts: 11
J'ai été confronté à ce problème : une table d'association associant plus de 2 entités et/ou avec des données dans l'association.

Je pense que la seule solution est d'utiliser les composants (chapitre 8 du document de référence hibernate). Mais la relation est nettement moins pratique qu'une véritable many-to-many. Je te conseilles de lire ce chapitre, c'est bien expliqué.

dans ton cas on pourrai faire un truc du genre dans le mapping du prof :

Il faut créer une classe pour l'association (que j'ai appelée leçon)

Code:
<set name="lecons" table="teachers_courses_classes" lazy="true">
   <key column="teacher"/>
   <composite-element class="class Lecon">
     <parent name="teacher"/>
     <property name="nombre"/> <!-- proprité de l'association-->
     <many-to-one name="cours" class="la class cours"/>
     <many-to-one name="classe" class="la class classe"/>
   </composite-element>
</set>


Hibernate gère les mise à jours dans la table d'asso, mais les mises à jour des références (cours ou classe) ne sont pas gérées.

à adapter en fonction de ton besoin...


Top
 Profile  
 
 Post subject: Re: mapping sur une table plusieurs-plusieurs-plusieurs
PostPosted: Fri Jul 10, 2009 7:04 am 
Beginner
Beginner

Joined: Fri May 23, 2008 4:37 am
Posts: 25
Super !

Merci beaucoup, je commençais à envisager de faire du JDBC pur mais ça marche parfaitement. Ca rend même mon code un peu plus propre.

Merci.


Pour les intéressés, j'ai juste du retirer la propriété de l'association car je n'en avais pas. Par contre j'ai vu que hibernate m'avais crée des clefs sur cours et classe..


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 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.