-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 
Author Message
 Post subject: Comment accéder aux éléments de collections de collection
PostPosted: Tue Sep 20, 2005 2:05 pm 
Beginner
Beginner

Joined: Fri Jan 07, 2005 2:47 pm
Posts: 45
Salut

Si quelqu'un connait la réponse à cette question ou un truc ça m'aiderait grandement.

Comment peux-ton lire les éléments se trouvant dans une collection qui elle même se trouve dans une autre collection qui se trouve aussi dans une collection????

Autrement dit je veux lire l'information de l'attribut nom qui se trouve dans la collection livre qui appartient à la collection auteur qui lui même appartient à la collection edition??

Merci


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 20, 2005 2:35 pm 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
Tu peux enchaîner les noms de collections, du genre

Code:
Table.edition.auteur.livre.nom


Et Hibernate s'efforce de créer les join nécessaires :-)

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Tue Sep 20, 2005 2:48 pm 
Beginner
Beginner

Joined: Fri Jan 07, 2005 2:47 pm
Posts: 45
Désolé je n'ai pas été suffisamment explicit. La réponse que tu m'as donné est bonne mais fonctionne si de classe en classe.

Mais comment fais-tu lorsque les collections sont des Hashset???

Initialiser comme suit:

Classe 1
private Set collection 1;

Classe 2
private Set collection 2;

Classe 3
private Set collection 3;

Classe 4
private Set collection 4;

Pour lire la 4ième tu dois passer par la collection 1 ensuite 2, 3 et finalement 4.

Si j'inscrit collection 1.getCollection2. ..le restant n'est pas visible pour que je puisse obtenir l'information désirer dans la 4ième collection.

As-tu un truc.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 21, 2005 1:53 am 
Pro
Pro

Joined: Fri Sep 02, 2005 4:21 am
Posts: 206
Location: Vienna
dfini wrote:
Désolé je n'ai pas été suffisamment explicit.
...
As-tu un truc.

C'est donc une question de Java :-).

Je n'ai malheureusement pas de truc. Il faut à mon avis d'une façon ou d'une autre itérer sur les collections (récursivement) et collecter les résultats que tu veux. Une "astuce" est peut-être d'utiliser la methode toArray(Object[] a) pour ne pas avoir à faire des cast à tout bout de champs, mais cela n'aide pas beaucoup...

Exemple de code (class1 est un objet de type Class1):
Code:
Set class3Set = new HashSet();
for (Class2 class2 : (Class2[]) class1.getCollection1().toArray(new Class2[0])) {
   class3Set.addAll(class2.getCollection2());
}

Set class4Set = new HashSet();
for (Object class3Elements : class3Set) {
   class4Set.addAll(((Class3) class3Elements).getCollection3());
}

Set nameSet = new HashSet();
for (Class4 class4Element : (Class4[]) class4Set.toArray(new Class4[0])) {
   for (Class5 class5Element : (Class5[]) class4Element.getCollection4().toArray(new Class5[0])) {
      nameSet.add(class5Element.getNom());
   }
}

J'ai volontairement mélangé les styles pour montrer ce qui se passe selon qu'on utilise ou non toArray. Si tu n'utilises pas Java 1.5, il faudra écrire une peu plus dans les conditions de boucle.

À la fin nameSet contient tous les noms différents des élements de Class5.

Ce n'est pas très compliqué mais c'est plutôt moche :-(.

Mais je pense que tu avais déjà trouvé cette possibilité et que tu espérais mieux. Tu devrais peut-être aussi essayer sur un forum Java.

Erik


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 21, 2005 7:12 am 
Beginner
Beginner

Joined: Fri Jan 07, 2005 2:47 pm
Posts: 45
Merci Erik

J'avais effectivement pensé à cette solution mais j'aurais voulu l'éviter. De plus, comme nous développons en java depuis peu, j'ai encore beaucoup de syntaxe à apprendre.

Merci


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.