comment carte java.util.Date de MySql Date dans Ibatis quand je prends de la contribution par le biais d'JSON

Je prends de la date de naissance de l'entrée en utilisant JSON

{"dateOfBirth":"1973-08-26"}

Ce champ existe dans Person.java classe

import java.util.Date;

public class Person {

    Date dateOfBirth;

    //Some other fields

    public void setDateOfBirth(Date dateOfBirth) {

         this.dateOfBirth = dateOfBirth;
       }

   public Date getDateOfBirth() {

        return dateOfBirth;
       }
   }

Elle est mappée à personne de la table dans la base de données mysql.
Je suis d'interrogation de la base de données comme:

entityId = (Long) session.selectOne("ValidatePerson", registerUserRequestParams);

Suivantes sont les entrées que je fais dans mon mapper.xml

<select id="ValidatePerson" parameterMap="ValidatePersonMap" resultType="long">
    select person.entityId
    from person
    where 
                //Some other Validation checks
        <if test="dateOfBirth != null">
        and person.dateOfBirth = #{dateOfBirth}
         </if>
        );
</select>

J'ai un prameter Carte comme

<parameterMap id="ValidatePersonMap" type="java.util.HashMap">
     <parameter property="dateOfBirth" javaType="java.util.Date" jdbcType="DATE"  mode="IN"/>
</parameterMap>

Je ne suis pas en mesure d'obtenir un résultat à partir de la base de données.Il ne sélectionnez pas de suite, même si la valeur existe.J'ai vérifié qu'aucun des autres contrôles de validation sont défaillants. Si je passe dateOfBirth nulle en JSON puis-je obtenir de résultat.

J'ai également écrit un scénario de test et de réglage de la demande comme suit:

Date dob = new Date(73,7,26);
request.setDateOfBirth(dob);

Quand j'ai passer des valeurs à partir de cas de test comme mentionné ci-dessus-je obtenir de résultat à partir de la base de données.
Problème ne se produit que lorsque je reçois des paramètres de la requête à l'aide de json.

  • Le format JSOn et le format stocké dans la bd sont même
  • Un travail autour de ce que j'ai est de convertir manuellement java.util.Date de Chaîne de caractères dans le format ci-dessus et de passer en tant que chaîne de caractères. Mais c'est assez mauvaise approche et le client n'aimerais pas ça.

OriginalL'auteur Aneesh Garg | 2012-01-12