Bonjour

J'ai le code suivant qui permet de remplir un hashmap par des String:

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
@Override
   public List<Offre> rechercheRapide(String CHAMP_TYPE_OFFRE, String CHAMP_VILLE, String CHAMP_REGION, String CHAMP_SECTEUR,String typeOffre, String ville, String region, String secteur) throws DAOException {
 
        Map myMap=new java.util.HashMap();
 
           // Ajout des objet dans le tableau associatif
          myMap.put(CHAMP_TYPE_OFFRE, typeOffre);
          myMap.put(CHAMP_VILLE, ville);
          myMap.put(CHAMP_REGION, region);
          myMap.put(CHAMP_SECTEUR, secteur);
 
 
   // Afficher le contenu du MAP
   Set listKeys=myMap.keySet();  // Obtenir la liste des clés
   Iterator iterateur=listKeys.iterator();
   // Parcourir les clés et afficher les entrées de chaque clé;
   String s="select * from Offre where ";
   while(iterateur.hasNext())
   {
       Object key= iterateur.next();
       s=s+(String)key+" = ? and ";
   }
       System.out.println("la requete est: "+s);
...
}
Ce résultat m'affiche:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
la requete est: select * from Offre where region = ? and type_offre = ? and ville = ? and secteur = ? and
region vient en 1er, suivi de type_offre, ville et secteur.

Pourtant lorsque j'ajoute les valeurs dans la Map, c'est type_offre qui est censé venir en 1er, suivi de ville, region et secteur.

Même dans ma Servlet l'ordre type_offre,ville, region, secteur est respecté:

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
public class RechercheRapide extends HttpServlet {
 
private static final String CHAMP_TYPE_OFFRE = "type_offre";
    private static final String CHAMP_VILLE = "ville";
    private static final String CHAMP_REGION = "region";
    private static final String CHAMP_SECTEUR = "secteur";
 
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
 
HttpSession session =  request.getSession();
 
        String typeOffre = getValeurChamp( request, CHAMP_TYPE_OFFRE );
String ville = getValeurChamp( request, CHAMP_VILLE );
String region = getValeurChamp( request, CHAMP_REGION );
String secteur = getValeurChamp( request, CHAMP_SECTEUR);
 
List<Offre> listeOffres = offreDao.rechercheRapide(CHAMP_TYPE_OFFRE, CHAMP_VILLE, CHAMP_REGION, CHAMP_SECTEUR, typeOffre, ville, region, secteur);
         Map<Long, Offre> mapListeOffres = new HashMap<Long, Offre>();
            for ( Offre offre : listeOffres )
            {
                mapListeOffres.put( offre.getId(), offre );
            }
            session.setAttribute( ATT_SESSION_OFF, mapListeOffres );
 
}
 
  private static String getValeurChamp( HttpServletRequest request, String nomChamp ) {
String valeur = request.getParameter( nomChamp );
if ( valeur == null || valeur.trim().length() == 0 ) {
return null;
} else {
return valeur;
}
}
 
}
Donc je ne comprends pas pourquoi j'ai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
la requete est: select * from Offre where region = ? and type_offre = ? and ville = ? and secteur = ? and
Au lieu de:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
la requete est: select * from Offre where type_offre = ? and ville = ? and region = ? and secteur = ? and
Merci