Bonjour,
J'espère être au bon endroit pour évoquer mon problème ...
Nous avons développez un site e-commerce avec HSQLDB et tout allait bien jusqu'à nous rencontrions des problèmes de lecture de données.
Je m'explique ...
Au lancement de l'application, une méthode lit l'ensemble des utilisateurs qui possède un compte. Cette liste est mise en mémoire (fonctionnement de HSQLDB) et utilisée par notre programme.
Le problème c'est que la requete retourne 67 enregistrements mais que seulement 37 sont lus et disponibles !
Voilà la méthode en question
La requete est basique : select * from customer => 67 enregistrements.
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
35
36
37
38
39
40
41
42
43
44 private void readCustomers() { _customers = new HashMap<String,BOCustomer>(); _customersById = new HashMap<Long,BOCustomer>(); try { DBConnection conn = DBConnectionManager.getConnection(); Object[][] set = conn.query(ALL_CUSTOMERS, null, ALL_CUSTOMERS_TYPES); for(int i=0 ; i<set.length ; i++) { Long id = (Long)set[i][0]; String email = (String)set[i][3]; BOCustomer customer = new BOCustomer(id, (String)set[i][1], (String)set[i][2], email, (String)set[i][4], (Long)set[i][5], (String)set[i][6], (Long)set[i][7]); _customers.put(email.toLowerCase(), customer); _customersById.put(id, customer); if(email.startsWith("OLD_")) { set = conn.query(GET_CUSTOMER_PWD, new Object[]{id}, GET_CUSTOMER_PWD_TYPES); if(((Long)set[0][0]).longValue() == 0) { customer.unsubscribed(); } } } conn.close(); } catch(Exception e) { System.out.println(e); } }
La boucle FOR doit donc effectuer 67 itérations, mais à 37, elle s'arrete et la HasMap _customers ne contient que 37 utilisateurs au lieu des 67 attendus
C'est incompréhensible.
J'ai augmenté la mémoire JAVA au démarrage (-Xmx=384M), le fichier .script ne fait que 350Ko, je ne comprends donc pas ce qui bloque ...
Merci pour votre aide et je suis dispo pour tout clarification
Partager