[英]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.