Skip to content

Commit 97e047e

Browse files
author
Thomas Risberg
committed
added check for existing configuration of generated keys before calling update with a KeyHolder. (SPR-7564)
1 parent b06b550 commit 97e047e

File tree

1 file changed

+7
-0
lines changed
  • org.springframework.jdbc/src/main/java/org/springframework/jdbc/object

1 file changed

+7
-0
lines changed

org.springframework.jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import javax.sql.DataSource;
2121

2222
import org.springframework.dao.DataAccessException;
23+
import org.springframework.dao.InvalidDataAccessApiUsageException;
2324
import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException;
2425
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
2526
import org.springframework.jdbc.core.namedparam.NamedParameterUtils;
@@ -177,6 +178,12 @@ public int update(Object... params) throws DataAccessException {
177178
* @return the number of rows affected by the update
178179
*/
179180
public int update(Object[] params, KeyHolder generatedKeyHolder) throws DataAccessException {
181+
if (!isReturnGeneratedKeys() && getGeneratedKeysColumnNames() == null) {
182+
throw new InvalidDataAccessApiUsageException(
183+
"The update method taking a KeyHolder should only be used when generated keys have " +
184+
"been configured by calling either 'setReturnGeneratedKeys' or " +
185+
"'setGeneratedKeysColumnNames'.");
186+
}
180187
validateParameters(params);
181188
int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(params), generatedKeyHolder);
182189
checkRowsAffected(rowsAffected);

0 commit comments

Comments
 (0)