diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java index d077fa63b08..27a108b043f 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java @@ -20,6 +20,7 @@ import java.util.Map; import javax.sql.DataSource; import org.springframework.dao.DataAccessException; +import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.jdbc.JdbcUpdateAffectedIncorrectNumberOfRowsException; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterUtils; @@ -177,6 +178,12 @@ public class SqlUpdate extends SqlOperation { * @return the number of rows affected by the update */ public int update(Object[] params, KeyHolder generatedKeyHolder) throws DataAccessException { + if (!isReturnGeneratedKeys() && getGeneratedKeysColumnNames() == null) { + throw new InvalidDataAccessApiUsageException( + "The update method taking a KeyHolder should only be used when generated keys have " + + "been configured by calling either 'setReturnGeneratedKeys' or " + + "'setGeneratedKeysColumnNames'."); + } validateParameters(params); int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(params), generatedKeyHolder); checkRowsAffected(rowsAffected);