diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java index 88084cc62d4a..692720b2cbee 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java @@ -26,9 +26,11 @@ import org.springframework.dao.DataAccessException; import org.springframework.dao.support.DataAccessUtils; import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.RowMapperResultSetExtractor; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterUtils; import org.springframework.jdbc.core.namedparam.ParsedSql; +import org.springframework.util.Assert; /** * Reusable operation object representing an SQL query. @@ -112,7 +114,10 @@ public int getRowsExpected() { public List execute(Object @Nullable [] params, @Nullable Map context) throws DataAccessException { validateParameters(params); RowMapper rowMapper = newRowMapper(params, context); - return getJdbcTemplate().query(newPreparedStatementCreator(params), rowMapper); + List result = getJdbcTemplate().query(newPreparedStatementCreator(params), + new RowMapperResultSetExtractor<>(rowMapper, getRowsExpected())); + Assert.state(result != null, "No result"); + return result; } /** @@ -229,7 +234,10 @@ public List executeByNamedParam(Map paramMap, @Nullable Map String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource); @Nullable Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters()); RowMapper rowMapper = newRowMapper(params, context); - return getJdbcTemplate().query(newPreparedStatementCreator(sqlToUse, params), rowMapper); + List result = getJdbcTemplate().query(newPreparedStatementCreator(sqlToUse, params), + new RowMapperResultSetExtractor<>(rowMapper, getRowsExpected())); + Assert.state(result != null, "No result"); + return result; } /**