Bonjour,
j'aimerais savoir comment faire pour récupérer une requêtes qui à lieux entre plusieurs table :
Comment faire pour gérer ce genre de requêtes ?Code:
1
2
3
4 select * from grade, membre where grade.id = membre.id
Version imprimable
Bonjour,
j'aimerais savoir comment faire pour récupérer une requêtes qui à lieux entre plusieurs table :
Comment faire pour gérer ce genre de requêtes ?Code:
1
2
3
4 select * from grade, membre where grade.id = membre.id
bonjour,
tu peux recuperer le resultat sous forme d'une liste d'objet:
Code:
1
2 List list= session.createQuery("from grade g,membre m where g.id=m.id'").list();
Oui mais après comment je fait pour récupérer mes valeurs, je doit faire un cast sur grade, membre... ?
vous auriez une réponse plus adaptée à vos besoins si vous expliquiez quelle est la relation entre grade et membre…
le fait que vous testiez leurs id respectifs laisse entendre une relation de type "is-a" dans un sens ou l'autre (l'un est sous-classe de l'autre) alors que les noms des classes eux laissent plutôt que vous avez une one-to-many mais alors le test d'égalité des id n'a pas de sens… (on s'attendrait plutôt à voir g.id = m.groupe_id par exemple…)
un membre à un et un seul grade.
mais pour un grade nous pouvons avoir plusieurs membre.
Une fois la liste recupere tu cast ton objet en fonction de si c'est un grade ou un membre puis tu recupere tes valeurs.
D'accord,
donc il me suffit de faire :
Je ne savais pas.Code:
1
2
3
4 List list = session.createQuery("from grade g,membre m where g.id=m.id").list(); (Membre)list.get(i); (Grade)list.get(i);
Merci de l'aide
donc une relation one-to-many, alors tester l'égalité des id n'a pas de sens...
le query renverra toujours un ensemble vide ou au moins un ensemble aléatoire…
et d'ailleurs vous n'avez pas besoin d'écrire de query pour obtenir les membres d'un groupe si vous faites votre mapping de la relation one-to-many correctement… Hibernate le fera pour vous et remplira correctement la collection des membres dans le groupe…
(le "Set<Membre> membres" que vous devriez avoir déclaré dans Groupe…)
Oui mais dans ma table membre :
id c'est un clé étrangère sur id de grade.
l'identifiant dans ma table membre c'est son pseudo.
Mais la je voulais afficher :
pseudoDuMembre à pour grade nomDuGrade...
tu fait betement un select sur les membre, puis pour 'afficher' tu fait un "member " + membre.getPseudo() + " a pour grade " + member.getGrade().getName().
Pas besoin de récupérer les deux sur ta requete
Edit: toasted :)