Java StoredProcedure与SqlReturnResultSet无法正常工作

时间:2013-10-13 20:05:16

标签: java resultset java-stored-procedures multiple-resultsets

我的Dao课程中有这个SP:

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

    public ScoreStoredProcedure(DataSource datasource) {
        super(datasource, SPROC_NAME);

        declareParameter(new SqlReturnResultSet("score", 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> lAllScore = super.execute(pUsername, pUUID, pLimit);
        return ((List<Score>) lAllScore.get("score")); 
    }

}

一切运行正常,但我对结果列表的映射有问题。 我在日志中有这一行:

INFO: Added default SqlReturnResultSet parameter named #result-set-2

但为什么ResultSet映射到键#result-set-2? 在这里,我将其声明为declareParameter(new SqlReturnResultSet("score", mScoreMapper));

问题是什么? RowMapper是正确创建的......

1 个答案:

答案 0 :(得分:1)

您的存储过程正在生成多个结果集。 Spring会分配您没有声明自动名称的结果集,就像您所看到的那样。请在此处查看此行为的说明:https://jira.springsource.org/browse/SPR-593?actionOrder=desc以及如何在http://forum.spring.io/forum/spring-projects/data/27532-jdbctemplate-missing-some-functionality处理多个结果集的讨论