From 97e047ed66d391cd1262b40847559c3d3c9110d4 Mon Sep 17 00:00:00 2001 From: Thomas Risberg Date: Mon, 6 Jun 2011 00:52:01 +0000 Subject: [PATCH] added check for existing configuration of generated keys before calling update with a KeyHolder. (SPR-7564) --- .../java/org/springframework/jdbc/object/SqlUpdate.java | 7 +++++++ 1 file changed, 7 insertions(+) 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);