Bonjours,
J'ai deux table lié 1-N
J'effectue un select * sur la première
puis un select sur la deuxième avec un where in du premier résultat.
Ensuite le fait un get"Collection" sur chaque enregistrement du premier résultat et je constate que pour ceci il fait plain de requète...or normalement apres mes deux première requètes tous les enregistrement devrai être déjà en mémoire....
Où est l'erreur??
Merci
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34 s = "from InfHostingSite "; query = session.createQuery(s); List sites = query.list(); printList(sites); s = "from InfPlatform p where p.InfHostingSite in (:sites)"; //query = session.createQuery(s).setParameter("sites", sites); query = session.createQuery(s).setParameterList("sites", sites); List platforms2 = query.list(); Iterator iter2 = platforms2.iterator(); String s2=""; while ( iter2.hasNext() ) { InfPlatform pl = (InfPlatform) iter2.next(); s2+= pl.getPath()+"\n"; } System.out.println(s2); //*/ iter2 = sites.iterator(); s2=""; while ( iter2.hasNext() ) { InfHostingSite s1 = (InfHostingSite) iter2.next(); Set<InfPlatform> sp = s1.getInfPlatforms(); Iterator it = sp.iterator(); while (it.hasNext()) { InfPlatform p = (InfPlatform) it.next(); s2 += p.getPath()+"\n"; } } System.out.println(s2);
Partager