Jeu de résultats de la procédure stockée contient la liste de LinkedCaseInsensitiveMap<V>

J'ai cet appel de procédure stockée en Java:

@Autowired
public ScoreDao(DataSource dataSource) {
    setDataSource(dataSource);
    mScoreStoredProcedure = new ScoreStoredProcedure(dataSource);
}

public List<Score> loadAllScore(String pUsername, String pUUID, int pLimit) {
    return mScoreStoredProcedure.execute(pUsername, pUUID, pLimit);
}

private class ScoreStoredProcedure extends StoredProcedure {
    private static final String SPROC_NAME = "loadUserScore";

    public ScoreStoredProcedure(DataSource datasource) {
        super(datasource, SPROC_NAME);
        declareParameter(new SqlReturnResultSet("#result-set-2", mScoreMapper));
        declareParameter(new SqlParameter("vusername", Types.VARCHAR));
        declareParameter(new SqlParameter("vuuid", Types.VARCHAR));
        declareParameter(new SqlParameter("vlimit", Types.INTEGER));
        compile();
    }

    @SuppressWarnings("unchecked")
    public List<Score> execute(String pUsername, String pUUID, int pLimit){ 
        Map<String,Object> lAllScoreResult = super.execute(pUsername, pUUID, pLimit);
        List<Score> lAllScore = ((List<Score>)lAllScoreResult.get("#result-set-2"));
        return lAllScore; 
    }

}

et ce mappeur de classe:

public class ScoreMapper implements RowMapper<Score> {

private String suffix = "";

@Autowired
private ScoreCreator scoreCreator;

@Autowired
private QuestionMapper questionMapper;

public ScoreMapper(String pSuffix) {
    suffix = pSuffix;
}

public Score mapRow(ResultSet rs, int rowNum) throws SQLException {
    Score lScore = scoreCreator.createScore(rs.getLong(suffix+"id"),
            rs.getTimestamp(suffix+"stempel"), rs.getString(suffix+"username"),
            rs.getInt(suffix+"points"), rs.getInt(suffix+"level"),
            rs.getString(suffix+"comment"),
            questionMapper.mapRow(rs, rowNum), rs.getString(suffix+"uuid"));
    return lScore;
}
  }

Le problème que j'ai est que le résultat de mon StoredProcedure n'est jamais coulé à List<Score>.

Au lieu de cela, il contient une Liste de LinkedCaseInsensitiveMap<V>. Chaque entrée représente une valeur à partir de la base de données.

Le mappeur est correctement câblé via Printemps.

Brièvement: je m'attendre comme résultat une List<Score>. J'ai pensé-je traiter avec les méthodes indiquées dans le code. Comment puis-je cast le résultat directement à mon List<Score>?

J'ai suivi ce tutoriel http://www.jtmelton.com/2007/10/30/using-springs-storedprocedure-and-rowmapper-mechanisms/

Pourriez-vous m'aider à trouver le problème?

On dirait que vous êtes de ne jamais appeler mapRow, vous êtes juste un moulage de la carte à une liste.
Oui Iam demandais aussi, mais j'ai suivi ce tutoriel jtmelton.com/2007/10/30/...
Ah ok. Bien gratter ce que j'ai dit à propos de l'appel de mapRow, ce ne doit être utilisé que par le printemps de l'api.
Si vous affichez le code où vous appelez l'exécution, qui peuvent être utiles. Posté le code semble correct d'après le tutoriel.
qui execute voulez-vous dire? J'ai posté le StoredProcedure exécuter déjà.

OriginalL'auteur Stefan Beike | 2013-10-14