Bonjour tout le monde!
J'essaie d'apprendre Hibernate en implémentant des exemples simples et en augmentant au fur et à mesure leur complexité.
Voici mon problème :
J'ai une base de test comportant 2 tables : une table utilisateur et une table voiture avec une relation de type one-to-many. Un utilisateur peut donc posséder plusieurs voitures mais une voiture ne peut appartenir qu'à une seule personne.
Je pense mes fichiers de mappings bon, et j'ai généré mes classes à partir de ces fichiers grâce à Hibernate Synchroniser.
Voici les bases. Maintenant je souhaite récupérer la liste des utilisateurs (ça c'est bon) mais également pour chacun la liste des voitures leur appartenant.
Et c'est là que ça bloque, car en fait il me récupère le premier utilisateur et lui assigne la première voiture de la table, mais pas la seconde (il en a 2 en tout).
Pour le second utilisateur il lui est attribué la 2nde voiture du premier utilisateur, mais aucune des 3 lui appartenant!!!
En gros j'ai l'impression qu'il ne tient pas du tout compte de la relation liant l'utilisateur à ses voitures...
Bien sur, j'aurais pu passer par une jointure au niveau de ma requete, mais à priori hibernate est tout à fait capable de le gérer.
Je pense donc que je passe à coté d'un concept essentiel, mais je ne vois pas...
Trève de bavardage, voici le code de ma classe de test qui sera peut-être plus explicite.
Voila, si jamais il manque certaines détails n'hésitez pas à me contacter!
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 Session session = HibernateUtil.currentSession(); List ListContacts = session.createQuery("from TContact").list(); Iterator it = ListContacts.iterator(); while(it.hasNext()) { TContact contact = (TContact) it.next(); System.out.println("Nom du contact : " + contact.getNom() + contact.getPrenom()); Iterator it_voiture = contact.getTVoitures().iterator(); while(it_voiture.hasNext()){ TVoiture v = (TVoiture) it_voiture.next(); System.out.println("Marque : " + v.getMarque() + " ,Modele : " + v.getModele()); } } //On ferme la session HibernateUtil.closeSession();
Merci d'avance, Arno
Partager