[Ibatis] Column not found
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 :
Code:
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.
Voici mon fichier xml :
Code:
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> |
La requête que je veux exécuter est demandes.getDemandesNir
Voici le code de ma méthode dans ma classe DaoImpl :
Code:
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);
} |
et enfin mon objet métier demandes :
Code:
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;
}
} |
Je précise que j'ai vérifié les concordances des noms avec la table "demande" et ca colle.