org.apache.torque.criteria.Criteria criteria,
ColumnValues updateValues,
Connection connection)
throws TorqueException
{
Query query = SqlBuilder.buildQuery(criteria);
query.setType(Query.Type.UPDATE);
query.getFromClause().clear();
String fullTableName = SqlBuilder.getFullTableName(
getTableMap().getFullyQualifiedTableName(),
criteria.getDbName());
query.getFromClause().add(new FromElement(fullTableName));
List<JdbcTypedValue> replacementObjects
= new ArrayList<JdbcTypedValue>();
for (Map.Entry<Column, JdbcTypedValue> updateValue
: updateValues.entrySet())
{
Column column = updateValue.getKey();
query.getSelectClause().add(column.getColumnName());
replacementObjects.add(updateValue.getValue());
}
PreparedStatement preparedStatement = null;
try
{
preparedStatement = connection.prepareStatement(query.toString());
int position = 1;
for (JdbcTypedValue replacementObject : replacementObjects)
{
Object value = replacementObject.getValue();
if (value != null)
{
preparedStatement.setObject(position, value);
}
else
{
preparedStatement.setNull(
position,
replacementObject.getJdbcType());
}
position++;
}
List<Object> replacements = setPreparedStatementReplacements(
preparedStatement,
query.getPreparedStatementReplacements(),
position - 1);
long startTime = System.currentTimeMillis();
log.debug("Executing update " + query.toString()
+ " using update parameters " + replacementObjects
+ " and query parameters "
+ replacements);
int affectedRows = preparedStatement.executeUpdate();