Spring JDBC BeanPropertyRowMapper oui non ('Y','N') boolean des propriétés du bean

J'ai une classe avec une chaîne de caractères, int et les champs booléens. J'ai les getters et setters déclarés.

public class SomeClass {

    private int id;
    private String description;
    private boolean active;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public boolean isActive() {
        return active;
    }
    public void setActive(boolean active) {
        this.active = active;
    }


}

Je suis BeanPropertyRowMapper pour obtenir tous les objets de et Oracle DB.

@Override
public List<Destination> getAll() {
     List<SomeClass> objs = jdbcTemplate.query(
                myQuery, new BeanPropertyRowMapper<SomeClass>(SomeClass.class));
     return objs;
}   

Si le débogage est activé que je vois:

[3/14/13 10:02:09:202 EDT] 00000018 SystemOut     O DEBUG BeanPropertyRowMapper - Mapping column 'ID' to property 'id' of type int
[3/14/13 10:02:09:202 EDT] 00000018 SystemOut     O DEBUG BeanPropertyRowMapper - Mapping column 'DESCRIPTION' to property 'description' of type class java.lang.String

Et puis il échoue en essayant de la carte active. Active est définie comme 1 byte CHAR dans la base de données avec des valeurs comme " Y " ou "N". Quelle est la meilleure façon d'utiliser BeanPropertyRowMapper et convertir des valeurs telles que 'Y' et 'N' boolean?

  • Vous êtes mieux d'écrire votre propre personnalisé RowMapper que d'essayer de trouver pourquoi le Printemps ne peut pas convertir boolean Y boolean true. Ou de modifier votre base de données de cartographie.
  • Merci pour vos infos. Comment puis-je modifier la base de données de cartographie pour résoudre ce depuis oracle n'ont pas de type booléen? Je pense qu'il y a de la valeur à l'aide de beanpropertyrowmapper, car il permet d'économiser beaucoup de code réutilisable surtout si vous avez beaucoup d'objets du domaine. Il aide à passer plus de temps et de se concentrer sur la logique métier de dataaccess.
  • Ouais, je viens de remarquer que l'Oracle n'a pas de type booléen. J'ai lu sur BeanPropertyRowMapper et apparemment c'était censé être (et l'est?) fixe dans Printemps 2.5.2. Vous pourriez avoir à jouer avec les BeanPropertyRowMapper méthodes bien.
  • Salut @Sotirios, merci pour pointer dans la bonne direction. Voir ma solution ci-dessous. Commentaires de bienvenue.
InformationsquelleAutor MickJ | 2013-03-14