Si no se informa al marco sobre qué columna es la clave, devolverá todas las columnas de la tabla como claves.
Puede informarlo pasando un nuevo parámetro al método de actualización, de la siguiente manera:
template.update(query, data, keyHolder, new String[] { "id" });
Consulte NamedParameterJdbcTemplate. actualización (sql, paramSource, generadoKeyHolder, keyColumnNames)