Bonjour,

J'utilise une requête contenant un Union. J'ai un problème pour définir les paramètres.

Voici ma requête :
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
 
 
			if (monthParam != 0){
				qString.append("SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire, jour.dureeTravail, jour.dateJour,"); 
				qString.append(" jour.absence.idAbsence,  jour.dureeAfaire, personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, "); 
				qString.append(" jour.dureeMedecineTravail, jour.dureeReunionSV, jour.dateJourDate"); 
				qString.append(" From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee "); 
				qString.append(" Where personne.idPersonne =  perssemainecompt.personne.idPersonne and perssemainecompt.jour.idJour = jour.idJour"); 
				qString.append(" and semaine.idSemaine = jour.semaine.idSemaine "); 
				qString.append(" and semaine.type ='Réalisé' "); 
				qString.append(" and personne.idPersonne = ? "); 
				qString.append(" and jour.dateJour = ? "); 
				qString.append(" group by perssemainecompt.jour.idJour"); 
				qString.append(" Union "); 
			}
 
 
			qString.append(" SELECT jour.jour, personne.nom, jour.debutHoraire, jour.finHoraire, jour.typeHoraire, jour.dureeTravail, jour.dateJour,"); 
			qString.append(" jour.absence.idAbsence,  jour.dureeAfaire, personne.horaireContrat, jour.indexJour, jour.dureeFormation, jour.dureeDelegation, "); 
			qString.append(" jour.dureeMedecineTravail, jour.dureeReunionSV, jour.dateJourDate"); 
			qString.append(" From Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Jour as jour, Ecartannee as ecartannee "); 
			qString.append(" Where personne.idPersonne =  perssemainecompt.personne.idPersonne and perssemainecompt.jour.idJour = jour.idJour"); 
			qString.append(" and semaine.idSemaine = jour.semaine.idSemaine "); 
			qString.append(" and semaine.type ='Réalisé' "); 
			qString.append(" and perssemainecompt.jour.idJour = jour.idJour 	"); 	
			qString.append(" and semaine.type ='Réalisé' "); 
			qString.append(" and personne.idPersonne = ?  "); 
 
 
			if (monthParam != 0){
				qString.append(" and jour.mois = ? "); 
				qString.append(" And jour.annee = ? ");
				qString.append(" group by perssemainecompt.jour.idJour");
				qString.append(" ORDER BY dateJourDate");
			}
 
			if (debutPeriode != null){
				qString.append(" AND STR_TO_DATE(jour.dateJour,'%d-%m-%Y') BETWEEN STR_TO_DATE('"+debutPeriode+"','%d-%m-%Y') ");
				qString.append(" AND STR_TO_DATE('"+finPeriode+"','%d-%m-%Y') ");
				qString.append(" group by jour.dateJour");
				qString.append(" ORDER BY str_to_date(jour.dateJour,'%d-%m-%Y') ASC ");
 
			}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
                Iterator results;
		if ((monthParam != 0)&&(debutPeriode == null)){
			Object[] params = {idPersonne, dateDernierJour, idPersonne, Integer.parseInt(Month), yearParam };
			results = this.getHibernateTemplate().find(qString.toString(), params).iterator();
		}else if(debutPeriode != null){
			Object[] params = {idPersonne};
			results = this.getHibernateTemplate().find(qString.toString(), params).iterator();
 
		}
Lorsque je ne renseigne pas le mois (monthParam ==0), la requête me renvoie des donnée, lorsque le mois est renseigné, j'ai le message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ordinal parameter mismatch
Pourriez vous m'aider s'il vous plait ? Merci d'avance