繁体   English   中英

Spring RowMapper 被忽略

[英]Spring RowMapper is being ignored

我这样调用我的存储过程:

        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
                .returningResultSet("LookupResponse", new LookupMapper())
                .withProcedureName(lookupProcedureName);

并传递一些参数:

        SqlParameterSource in = new MapSqlParameterSource()
            .addValue("id", request.getId())
            .addValue("Username", userName)

行映射器的代码:

public class LookupMapper implements RowMapper<LookupResponse> {

    @Override
    public LookupResponse mapRow(ResultSet rs, int i) throws SQLException {
        LookupResponse lookupResponse = new LookupResponse();
        lookupResponse.setDeviceId(rs.getInt("DeviceId"));
        lookupResponse.setApplicationId(rs.getInt("AppId"));
        return lookupResponse;
    }
}

然后我打电话给数据库:

Map<String, Object> out = jdbcCall.execute(in);

我在返回的 map 中看到未映射的键值对,当我这样做时:

(Collection<LookupResponse>) out.get("LookupResponse");

它返回 null。

我的行映射响应没有键。 相同类型的代码适用于另一个存储过程......我不明白可能是什么原因。 控制台中没有异常,只是忽略了 rowMapper。 请帮助我理解。

根据以下更改Map<String, Object> out = jdbcCall.execute(in); Map<String, Object> outMap = jdbcCall.withReturnValue().execute(in);

我有同样的问题。 执行此操作以排除故障

System.out.println(out);

确保字符串以“LookupResponse”开头

{LookupResponse=[...

如果不相应地更换它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM