Bonjour,
Je travaille avec Websphère 5.1 et une base MySql.
je suis en train de tester une nouvelle requête assez simple avec "sqlMap" qui récupère un ou plusieurs enregistrements en lui passant un id et une date.
J'avais déjà fait une première requête getAll() qui fonctionne très bien et pour faire cette nouvelle requête je dois ajouter une propriété "dateCertifNir" dans le resultMap de mon fichier d'ordres SQL et apparemment ca coince, j'ai l'erreur quivante :
Voici mon fichier xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Error 500: ; nested exception is: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in fr/canam/rniam/ibatis/config/demandes-mysql.xml. --- The error occurred while applying a result map. --- Check the demandes.map. --- Check the result mapping for the 'dateCertifNir' property. --- Cause: java.sql.SQLException: Column 'date_certif_nir' not found. Caused by: java.sql.SQLException: Column 'date_certif_nir' not found.
La requête que je veux exécuter est demandes.getDemandesNir
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 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <!-- Fichiers contenant les ordres SQL --> <sqlMap> <typeAlias alias="demandes.classe" type="fr.canam.rniam.entites.Demandes"/> <resultMap id="demandes.map" class="fr.canam.rniam.entites.Demandes"> <result property="strTypeDemande" column="type_demande"/> <result property="strEtatDemande" column="etat_demande"/> <result property="dateEmisDemande" column="date_demande"/> <result property="dateRecepReponse" column="date_reponse"/> <result property="strNir" column="nir_demande"/> <result property="dateCertifNir" column="date_certif_nir"/> <result property="strNom" column="nom_demande"/> <result property="strPrenom" column="prenom_demande"/> <!--<result property="dateNaiss" column="date_naissance_demande"/>--> </resultMap> <!-- liste des demandes --> <select id="demandes.getAll" resultMap="demandes.map"> SELECT TYPE_DEMANDE, ETAT_DEMANDE, DATE_DEMANDE, DATE_REPONSE, NIR_DEMANDE, NOM_DEMANDE, PRENOM_DEMANDE FROM DEMANDE </select> <!-- liste des demandes par Nir et dateCertif--> <select id="demandes.getDemandesNir" resultMap="demandes.map" parameterClass="demandes.classe" remapResults="true"> SELECT TYPE_DEMANDE, ETAT_DEMANDE, DATE_DEMANDE, DATE_REPONSE, NIR_DEMANDE, NOM_DEMANDE, PRENOM_DEMANDE FROM DEMANDE WHERE NIR_DEMANDE=#strNir# AND DATE_CERTIF_NIR=#dateCertifNir# </select> </sqlMap>
Voici le code de ma méthode dans ma classe DaoImpl :
et enfin mon objet métier demandes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public Collection getDemandesNir(String strNir, Timestamp dateCertif) { // TODO Raccord de méthode auto-généré Demandes demandes = new Demandes(); demandes.setStrNir(strNir); demandes.setDateCertifNir(dateCertif); return getSqlMapClientTemplate().queryForList("demandes.getDemandesNir",demandes); }
Je précise que j'ai vérifié les concordances des noms avec la table "demande" et ca colle.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 public class Demandes { private String strTypeDemande; private String strEtatDemande; private Timestamp dateEmisDemande; private Timestamp dateRecepReponse; private Timestamp dateCertifNir; private Timestamp dateNaiss; private String strNir; private String strNom; private String strPrenom; public Demandes() { } public Demandes( String strTypeDemande, String strEtatDemande, Timestamp dateEmisDemande, Timestamp dateRecepReponse, String strNir, String strNom, String strPrenom ){ this.strTypeDemande = strTypeDemande; this.strEtatDemande = strEtatDemande; this.dateEmisDemande = dateEmisDemande; this.dateRecepReponse = dateRecepReponse; this.strNir = strNir; this.strNom = strNom; this.strPrenom = strPrenom; } /** * @return */ public Timestamp getDateEmisDemande() { return dateEmisDemande; } /** * @return */ public Timestamp getDateRecepReponse() { return dateRecepReponse; } /** * @return */ public String getStrEtatDemande() { return strEtatDemande; } /** * @return */ public String getStrNir() { return strNir; } /** * @return */ public String getStrNom() { return strNom; } /** * @return */ public String getStrPrenom() { return strPrenom; } /** * @return */ public String getStrTypeDemande() { return strTypeDemande; } /** * @param timestamp */ public void setDateEmisDemande(Timestamp timestamp) { dateEmisDemande = timestamp; } /** * @param timestamp */ public void setDateRecepReponse(Timestamp timestamp) { dateRecepReponse = timestamp; } /** * @param string */ public void setStrEtatDemande(String string) { strEtatDemande = string; } /** * @param string */ public void setStrNir(String string) { strNir = string; } /** * @param string */ public void setStrNom(String string) { strNom = string; } /** * @param string */ public void setStrPrenom(String string) { strPrenom = string; } /** * @param string */ public void setStrTypeDemande(String string) { strTypeDemande = string; } /** * @return */ public Timestamp getDateCertifNir() { return dateCertifNir; } /** * @param timestamp */ public void setDateCertifNir(Timestamp timestamp) { dateCertifNir = timestamp; } /** * @return */ public Timestamp getDateNaiss() { return dateNaiss; } /** * @param timestamp */ public void setDateNaiss(Timestamp timestamp) { dateNaiss = timestamp; } }
Partager