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 :

[Hibernate] Charger les données d'une table intermédiaire


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut [Hibernate] Charger les données d'une table intermédiaire
    Bonjour, je viens de débuter mon premier projet de tests avec hibernate 3.0.5. J'ai réussi à réaliser mes premiers pojos facilement.
    Cependant j'ai un soucis pour récupérer certaines données.

    J'ai une table outil qui contient un id et un numéro de reference. J'ai une table Composant qui contient un id et un numéro de reference également. Un outil peux avoir plusieurs composants. Pour cela j'ai créer une table intermédiaire qui conteint les ids de l'outil et du ou des composants. Jusque la pas de probleme j'ai un fichier xml de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <hibernate-mapping package="outil">
     
    	<class name="Outil" table="Tools" lazy="true">
    		<id name="id" column="To_Id">
    			<generator class="increment"/>
    		</id>
    		<property name="t" column="To_T" type="string"/>
     
                    <set name="composants" table="ToolsComponents">
                        <key column="Tc_Tools"/>
                        <many-to-many column="Tc_Comp" class="Composant"/>
                    </set>    
    	</class>
    </hibernate-mapping>
    Maintenant concernant la table intermediaire nommée ToolsComponents j'y ai ajouté des attributs du genre nombre de composants...
    Donc ma table ToolsComponents contient Tc_Tools(Id outil),Tc_Comp (id composant),Tc_Quantite

    Le probleme est que je ne sais comment faire pour aller rechercher ces données ???


    Auriez vous une idée pour m'aider ?

    Merci d'avance

    [ Sujet déplacé depuis le forum java par Viena ]
    Les Règles du Forum

  2. #2
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Crée un objet OutilComposant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class OutilComposant {
        private int  quantity;
        private Outil outil;
        private Composant composant;
        ...
    }
    et utilise ce mapping :
    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
     
    <hibernate-mapping package="outil">
     
       <class name="Outil" table="Tools" lazy="true">
          <id name="id" column="To_Id">
             <generator class="increment"/>
          </id>
          <property name="t" column="To_T" type="string"/>
     
          <set name="composants" table="ToolsComponents">
                <key column="Tc_Tools"/>
                <composite-element class="OutilComposant">
                    <property name="quantity" column="Tc_Quantite "/>
                    <many-to-one name="composant" column="Tc_Comp"/>
                </composite-element>
          </set>
     
       </class>
    </hibernate-mapping>
    Je ne donne pas de garantie, mais ca peut marcher.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Et OutilComposant je le matte comment alors ?

    Et quand je veux charger un outil je fais simplement ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Outil o = (Outil)this.session.load(Outil.class,new Integer(1));
    ?

  4. #4
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Pas besoin de mapping si tu le mappes comme un composant (ce que j'ai fait dans mon exemple).
    Si tu veux rendre navigable ta relation entre composant et outil, il faudra alors changer le mapping (2 relations 1-n). Je te laisse le faire, c'est le meilleur moyen d'apprendre.
    Et oui, tu peux charger ton outil avec le code que tu as écrit.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Y a quelque chose qui m'échappe la dedans ?!?

    Bon lorsque je charge moinn objet outil en memoire il devrait alors charger La liste des composants associés. Jusque la ok. Ensuite il voit dans le fichier xml que cest composite alors il instancie un objet outilcomposant. Mais je recupere jamais la reference de outilcomposant de 1 de 2 si j'ai plusieurs composants alors j'ai plusieur instance de cette classe ....?

  6. #6
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Citation Envoyé par nicoo
    Y a quelque chose qui m'échappe la dedans ?!?

    Bon lorsque je charge moinn objet outil en memoire il devrait alors charger La liste des composants associés. Jusque la ok. Ensuite il voit dans le fichier xml que cest composite alors il instancie un objet outilcomposant. Mais je recupere jamais la reference de outilcomposant de 1 de 2 si j'ai plusieurs composants alors j'ai plusieur instance de cette classe ....?
    Euh, moi aussi j'ai du mal à te comprendre :
    - tu charges un objet Outil avec ton code
    - Outil contient une collection d'objets OutilComposant
    - Chaque objet OutilComposant contient une référence vers un Composant et la quantité de composant pour ton outil.
    Ce n'est pas ce que tu veux ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Ah si bon je vais tester ca. C'est plus clair comme ca en effet merci je test et je dit quoi

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Bon il semblerait qu il y ait un dernier probleme

    A chque fois que j'appele la methode pour recuperer mes objs OutilComposant il me sort une exception du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.hibernate.exception.SQLGrammarException: could not initialize a collection: [outil.Outil.composants#844]

  9. #9
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Regarde le SQL généré.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    euh oué je suis débutant la dedans comment je dois faire ?

  11. #11
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Regarde ici.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Hibernate: select outil0_.To_Id as To1_0_, outil0_.To_T as To2_0_0_ from Tools outil0_ where outil0_.To_Id=?

    Hibernate: select composants0_.Tc_Tools as Tc1_0_, composants0_.Tc_Quantite as Tc2_0_, composants0_.Tc_Comp as Tc3_0_ from ToolsComponents composants0_ where composants0_.Tc_Tools=?

    org.hibernate.exception.SQLGrammarException: could not initialize a collection: [outil.Outil.composants#844]
    Ca nous avance pas des masses car cela semble correcte

  13. #13
    Membre averti
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Points : 427
    Points
    427
    Par défaut
    Cherche des exemples de mapping dans la doc d'hibernate. Il y a ptet un truc de pas correct.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 133
    Points : 112
    Points
    112
    Par défaut
    Je viens de résoudre le probleme un grand merci pour ton aide. C'etait le champ de la abse de donnée qui ne correspondait pas avec celui placé dans l'xml


    merci

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

Discussions similaires

  1. afficher les données d'une table (jsf+hibernate)
    Par amattoallah dans le forum JSF
    Réponses: 4
    Dernier message: 17/05/2010, 17h21
  2. Charger les données d'une table
    Par petitcatenaire dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/12/2008, 14h56
  3. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  4. MySQL Administrator : modifier les données d'une table
    Par Robinounou dans le forum Outils
    Réponses: 4
    Dernier message: 13/07/2005, 17h21
  5. transformer les données d'une table .dbf vers ma BD
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/11/2004, 09h54

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