Мы вызываем хранимую процедуру pl / sql через Spring SimpleJdbcCall, набор размеров выборки в JdbcTemplate игнорируется SimpleJdbcCall. Размер выборки результирующего набора строк установлен на 10, хотя мы установили размер выборки jdbctemplate равным 200. Любая идея, почему это происходит и как это исправить?
Распечатал размер выборки набора результатов в rowmapper в следующем фрагменте кода - как только это 200, а в другой раз 10, хотя я использую один и тот же JdbcTemplate в обоих случаях.
Это прямое выполнение через jdbctemplate возвращает размер выборки 200 в преобразователе строк
jdbcTemplate = new JdbcTemplate(ds);
jdbcTemplate.setResultsMapCaseInsensitive(true);
jdbcTemplate.setFetchSize(200);
List temp = jdbcTemplate.query("select 1 from dual", new ParameterizedRowMapper() {
public Object mapRow(ResultSet resultSet, int i) throws SQLException {
System.out.println("Direct template : " + resultSet.getFetchSize());
return new String(resultSet.getString(1));
}
});
Это выполнение через SimpleJdbcCall всегда возвращает размер выборки 10 в rowmapper
jdbcCall = new SimpleJdbcCall(jdbcTemplate).withSchemaName(schemaName)
.withCatalogName(catalogName).withProcedureName(functionName);
jdbcCall.returningResultSet((String) outItValues.next(), new ParameterizedRowMapper<Map<String, Object>>() {
public Map<String, Object> mapRow(ResultSet rs, int row) throws SQLException {
System.out.println("Through simplejdbccall " + rs.getFetchSize());
return extractRS(rs, row);
}
});
outputList = (List<Map<String, Object>>) jdbcCall.executeObject(List.class, inParam);