IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

many-to-many problème de persistance


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut many-to-many problème de persistance
    j'ai un problème de persistance de ma classe, je m'explique j'ai une classe Utilisateur qui peut appartenir à +ieurs groupes, la classe utilisateur hérite de la classe Personne et la classe Groupe hérite de la classe Typedico voici les fichiers de mapping
    voici le mapping de la classe Personne et Utilisateur
    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
    25
    26
    27
     
    ...
    <hibernate-mapping package="com.myapp.exploreoffre.javabeans">
        <class name="Personne" table="personne"  dynamic-update="true" dynamic-insert="true">
            <id name="personneid" column="personneid" unsaved-value="0">
                <generator class="sequence">
                    <param name="sequence">serie</param>
                </generator> 
            </id>
            <property name="personneid" column="personneid" insert="false" update="false"/>
    ...
                  <joined-subclass name="Utilisateur" table="utilisateur">
                <key column ="personneid"/>
                <property name="utilisateurid" column="utilisateurid" insert="false" update="false"/>       
                <property name="initiale" column="initiale"/>
                <many-to-one name="authentification" class="Authentification" column="authentificationid" unique="true" cascade="all"/>
                <set name="clients" table="clients" cascade="all">
                    <key column="utilisateurid"/>
                    <many-to-many column="clientid" class="Client"/>
                </set>
                <set name="groupes" table="groupes" cascade="all">
                    <key column="utilisateurid"/>
                    <many-to-many column="groupeid" class="Groupe"/>
                </set>                
            </joined-subclass>
        </class>
    </hibernate-mapping>
    Voici le mapping de la classe Groupe et Typedico

    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
     
    <hibernate-mapping package="com.myapp.exploreoffre.javabeans" default-lazy="true">
        <class name="Typedico" table="typedico" dynamic-update="true" dynamic-insert="true">
            <id name="typedicoid" column="typedicoid" unsaved-value="0">
                <generator class="sequence">
                    <param name="sequence">serie</param>
                </generator> 
            </id>
            <property name="typedicoid" column="typedicoid" insert="false" update="false"/>
     
    ...
     <joined-subclass name="Groupe" table="groupe">
                <key column="typedicoid"/>
                <property name="groupeid" column="groupeid" insert="false" update="false"/>
                <property name="typedico" column="typedico" type="boolean"/>
            </joined-subclass>
    voici la méthode qui permet de sauvegarder les objets dans la BD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public void insert(Object in) throws Exception {
            Session session = HibernateUtil.getSession();
            HibernateUtil.beginTransaction();
            session.saveOrUpdate(in);
            HibernateUtil.commitTransaction();        
        }
     public List list(Object in) throws Exception {
            Session session = HibernateUtil.getSession();
            HibernateUtil.beginTransaction();
            Criteria criteria = session.createCriteria(in.getClass());
            return criteria.list();
        }
    la méthode de la classe Action qui utilise ces méthodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     BeanUtils.copyProperties(utilisateur, fillform.getUtilisateur());
                    BeanUtils.copyProperties(utilisateur.getAuthentification(), fillform.getUtilisateur().getAuthentification());                
                    for (int dI = 0; dI < fillform.getIdentifiants().length; dI++) {
                        groupe = (Groupe) new HibernateDAO().find(new Groupe(), new Integer(fillform.getIdentifiants(dI)));
                        utilisateur.getGroupes().add(groupe);
                    }
                    new HibernateDAO().insert(utilisateur);
                    form.reset(mapping, request);
                    return mapping.findForward("utilisateur");
    voici la sortie de Hibernate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Hibernate: /* insert com.myapp.exploreoffre.javabeans.Utilisateur */ insert into personne (nom, prenom, email, telephone, fax, gsm, personneid) values (?, ?, ?, ?, ?, ?, ?)
    Hibernate: /* insert com.myapp.exploreoffre.javabeans.Utilisateur */ insert into utilisateur (initiale, authentificationid, personneid) values (?, ?, ?)
    Hibernate: /* update com.myapp.exploreoffre.javabeans.Authentification */ update authentification set identifiant=?, password=? where authentificationid=?
    Hibernate: /* load com.myapp.exploreoffre.javabeans.Groupe */ select groupe0_.typedicoid as typedicoid6_0_, groupe0_1_.nom as nom6_0_, groupe0_1_.commentaire as commenta3_6_0_, groupe0_.groupeid as groupeid15_0_, groupe0_.typedico as typedico15_0_ from groupe groupe0_ inner join typedico groupe0_1_ on groupe0_.typedicoid=groupe0_1_.typedicoid where groupe0_.typedicoid=?
    Hibernate: /* load com.myapp.exploreoffre.javabeans.Groupe */ select groupe0_.typedicoid as typedicoid6_0_, groupe0_1_.nom as nom6_0_, groupe0_1_.commentaire as commenta3_6_0_, groupe0_.groupeid as groupeid15_0_, groupe0_.typedico as typedico15_0_ from groupe groupe0_ inner join typedico groupe0_1_ on groupe0_.typedicoid=groupe0_1_.typedicoid where groupe0_.typedicoid=?
    visiblement les groupes séléctionnés dans la jsp sont chargés par Hibernate mais ne sont pas insérés dans la BD. quelqu'un à t-il une explication Merci.

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    Personne ne semble être intéressé alors on va clôturer la discussion

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de persistance avec une relation many-to-one
    Par cb-06 dans le forum Doctrine2
    Réponses: 3
    Dernier message: 28/11/2012, 16h24
  2. Problème avec Composite-Id (mapping many-to-many))
    Par ammouna24 dans le forum Hibernate
    Réponses: 0
    Dernier message: 07/05/2009, 11h43
  3. set, many-to-many : problème suppression
    Par maxime_c dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/06/2008, 17h50
  4. [hibernate]many-to-many petit problème
    Par Allensan dans le forum Hibernate
    Réponses: 4
    Dernier message: 12/12/2007, 09h25
  5. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo