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 :

Relation many-to-many


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut Relation many-to-many
    Salut à tous

    Je débute dans l'utilisation du many-to-many et a force de regarder des exemples sur le net j'en perds mon latin ... tous sont différents ...
    alors voilà j'ai une table MENU et OPERATION
    un menu peut appeler plusieurs Opération et une Opération peut etre appelée par plusieurs menus ...
    j'ai également dans ma base la table de correspondance CORRESPONDANCEMENUOPERATION
    alors de ce que j'ai pu tirer globalement de ce que j'ai vu sur le net ca donne :

    dans mon operationElementaire.hbm.xml
    <set name="menus" table="CORRESPONDANCEMENUOE">
    <key>
    <column name="codeOE"/>
    </key>
    <many-to-many class="Menu">
    <column name="idMenu" not-null="true"/>
    </many-to-many>
    </set>
    dans mon menu.hbm.xml
    <set name="operationsElementaires" table="CORRESPONDANCEMENUOE">
    <key>
    <column name="idMenu"/>
    </key>
    <many-to-many class="OperationElementaire" >
    <column name="codeOE" not-null="true"/>
    </many-to-many>
    </set>
    et après dans mes classes j'ai rajoutés des sets :
    Menu.java
    private Set operationsElementaires;
    OperationElementaire.java
    private Set menus;
    et ca ne marche pas ....
    si quelqu'un peut me dire si y a quelque chose que jfais mal...
    merciiii

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Personne ne peut m'aider ?! ca me permettrait d'avancer car là je bloque ....
    il est pas si compliqué que ca ?: si
    merciiiii

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut
    Salut j'ai moi aussi une relation many-to-many.
    Je l'ai codée de la manière suivante :
    D'un coté j'ai un Set et de l'autre un Bag.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <set name="menus" table="CORRESPONDANCEMENUOE">
          <key column="codeOE" />
          <many-to-many class="Menu" column="idMenu" />
    </set>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <bag name="operationsElementaires" table="CORRESPONDANCEMENUOE">
          <key column="idMenu" />
          <many-to-many class="OperationElementaire" column="codeOE" />
    </bag>
    Je garantis pas que ca marche, mais moi c'est de cette facon que je l'ai faite.
    Bon courage ^^

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    merci Nikko ...en fait il me manquait une lib
    bon je sais tjs pas si ca marche car j'ai un autre bug ... jvais un autre topic ...
    mais en tout cas merci pour ton aide

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut Autre Bug :D
    Alors bon a la compil ca marche maintenant mais j'ai un autre bug alors que jfais un select d'un Opération elementaire ... jvous mets mes différents fichiers ...
    operationElementaitre.hbm.xml
    <class name="OperationElementaire" table="OPERATIONELEMENTAIRE">
    <id name="codeOE" type="string" column="CODEOE">
    <generator class="assigned" />
    </id>
    <property name="libelleOE" />
    <property name="valideOE" type="int" />
    <property name="etatOE" type="int" />
    <many-to-one name="codeAppli" class="Application"
    column="CODEAPPLI" not-null="true" />
    <property name="dateCreationOE" type="date" />
    <property name="dateEffetOE" type="date" />

    <set name="menus" table="CORRESPONDANCEMENUOE" inverse="true">
    <key column="CODEOE" />
    <many-to-many class="Menu"/>
    </set>

    </class>
    Bon dans le OperationElementaire.java y a tout les champs avec getteurs et setteurs (le champ menus étant représenté par un java.util.Set)
    mon Menu.hbm.xml
    <class name="Menu" table="MENU">
    <id name="idMenu" type="integer" column="IDMENU">
    <generator class="increment" />
    </id>
    <property name="libelleMenu" />
    <property name="typeMenu" type="int" />
    <property name="position" type="int" />
    <property name="valideMenu" type="int" />
    <property name="typeIdentifiant" />
    <property name="dateCreationMenu" type="date" />
    <property name="dateEffetMenu" type="date" />
    <many-to-one name="menuPere" class="Menu" column="menuPere" />

    <set name="operationsElementaires" table="CORRESPONDANCEMENUOE">
    <key column="IDMENU" />
    <many-to-many class="OperationElementaire"/>
    </set>
    </class>
    idem pour le Menu.java

    et j'essaye de faire :
    String tmp = (String)OESelect.get(i);
    System.out.println("OE SELECT "+tmp);
    List result = session.createQuery("FROM OperationElementaire where codeOE like '"+tmp+"'").list();
    Iterator it = result.iterator();
    while (it.hasNext())
    {
    OperationElementaire oe= (OperationElementaire)it.next();
    System.out.println(oe);
    }
    et il m'affiche pas la variable oe
    il me met cette erreur :
    Hibernate: select operatione0_.CODEOE as CODEOE, operatione0_.libelleOE as libelleOE, operatione0_.valideOE as valideOE, operatione0_.etatOE as etatOE, operatione0_.CODEAPPLI as CODEAPPLI, operatione0_.dateCreationOE as dateCrea6_, operatione0_.dateEffetOE as dateEffe7_ from OPERATIONELEMENTAIRE operatione0_ where (codeOE like 'EDC-LPU-356' )
    Hibernate: select applicatio0_.CODEAPPLI as CODEAPPLI1_, applicatio0_.libelleAppli as libelleA2_1_, applicatio0_.valideAppli as valideAp3_1_, applicatio0_.etatAppli as etatAppli1_, applicatio0_.dateCreationAppli as dateCrea5_1_, applicatio0_.dateEffetAppli as dateEffe6_1_, applicatio0_.codeTypeAppli as codeType7_1_, typeapplic1_.CODETYPEAPPLI as CODETYPE1_0_, typeapplic1_.libelleTypeAppli as libelleT2_0_, typeapplic1_.etatTypeAppli as etatType3_0_, typeapplic1_.dateCreationTypeAppli as dateCrea4_0_, typeapplic1_.dateEffetTypeAppli as dateEffe5_0_ from APPLICATION applicatio0_ left outer join TYPEAPPLICATION typeapplic1_ on applicatio0_.codeTypeAppli=typeapplic1_.CODETYPEAPPLI where applicatio0_.CODEAPPLI=?
    Hibernate: select menus0_.CODEOE as CODEOE__, menus0_.elt as elt__, menu1_.IDMENU as IDMENU0_, menu1_.libelleMenu as libelleM2_0_, menu1_.typeMenu as typeMenu0_, menu1_.position as position0_, menu1_.valideMenu as valideMenu0_, menu1_.typeIdentifiant as typeIden6_0_, menu1_.dateCreationMenu as dateCrea7_0_, menu1_.dateEffetMenu as dateEffe8_0_, menu1_.menuPere as menuPere0_, menu2_.IDMENU as IDMENU1_, menu2_.libelleMenu as libelleM2_1_, menu2_.typeMenu as typeMenu1_, menu2_.position as position1_, menu2_.valideMenu as valideMenu1_, menu2_.typeIdentifiant as typeIden6_1_, menu2_.dateCreationMenu as dateCrea7_1_, menu2_.dateEffetMenu as dateEffe8_1_, menu2_.menuPere as menuPere1_ from CORRESPONDANCEMENUOE menus0_ inner join MENU menu1_ on menus0_.elt=menu1_.IDMENU left outer join MENU menu2_ on menu1_.menuPere=menu2_.IDMENU where menus0_.CODEOE=?
    29 mai 2007 11:12:53 net.sf.hibernate.util.JDBCExceptionReporter logExceptions
    ATTENTION: SQL Error: 904, SQLState: 42000
    29 mai 2007 11:12:53 net.sf.hibernate.util.JDBCExceptionReporter logExceptions
    GRAVE: ORA-00904: "MENUS0_"."ELT" : identificateur non valide

    29 mai 2007 11:12:53 net.sf.hibernate.util.JDBCExceptionReporter logExceptions
    ATTENTION: SQL Error: 904, SQLState: 42000
    29 mai 2007 11:12:53 net.sf.hibernate.util.JDBCExceptionReporter logExceptions
    GRAVE: ORA-00904: "MENUS0_"."ELT" : identificateur non valide

    Erreur Base de Données - Création Menu
    net.sf.hibernate.exception.SQLGrammarException: could not initialize collection: [fr.paf.persistance.OperationElementaire.menus#EDC-LPU-356]
    Si quelqu'un peut m'aider jsuis preneur merciiiiiiiiiiii !!!!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    bon bah j'ai résolu en fait y avait des trucs que j'avais pa renseigné c'est pour cela voilà du coup à quoi ressemble mes fichiers hbm.xml

    OperationElementaire.hbm.xml
    <class name="OperationElementaire" table="OPERATIONELEMENTAIRE">
    <id name="codeOE" type="string" column="CODEOE">
    <generator class="assigned" />
    </id>
    <property name="libelleOE" />
    <property name="valideOE" type="int" />
    <property name="etatOE" type="int" />
    <many-to-one name="codeAppli" class="Application"
    column="CODEAPPLI" not-null="true" />
    <property name="dateCreationOE" type="date" />
    <property name="dateEffetOE" type="date" />

    <set name="menus" table="CORRESPONDANCEMENUOE">
    <key column="CODEOE" />
    <many-to-many class="Menu" column="IDMENU"/>
    </set>
    et mon Menu.hbm.xml
    <class name="Menu" table="MENU">
    <id name="idMenu" type="integer" column="IDMENU">
    <generator class="increment" />
    </id>
    <property name="libelleMenu" />
    <property name="typeMenu" type="int" />
    <property name="position" type="int" />
    <property name="valideMenu" type="int" />
    <property name="typeIdentifiant" />
    <property name="dateCreationMenu" type="date" />
    <property name="dateEffetMenu" type="date" />
    <many-to-one name="menuPere" class="Menu" column="menuPere" />

    <set name="operationsElementaires" table="CORRESPONDANCEMENUOE">
    <key column="IDMENU" />
    <many-to-many class="OperationElementaire" column="CODEOE"/>
    </set>
    </class>
    et dans un fichier je fais
    OperationElementaire oe= (OperationElementaire)session.load(OperationElementaire.class,tmp);
    menu.addOperationsElementaires(oe);
    et ca marche ... que demander de plus
    en espèrant que j'aurais aps d'autre problème avec le update ou delete ...
    enfin bon Nikko merci encore

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

Discussions similaires

  1. PGSQL-EclipseLink Relation One To Many et Many To One
    Par faitor1 dans le forum Persistance des données
    Réponses: 0
    Dernier message: 30/01/2015, 19h46
  2. 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
  3. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47
  4. [hibernate]relation many-to-many
    Par quilo dans le forum Hibernate
    Réponses: 5
    Dernier message: 20/12/2005, 10h07
  5. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26

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