{
throw new TorqueException("Unqualified column name in criteria"
+ " or table name not found in database map");
}
Query query = SqlBuilder.buildQuery(criteria);
query.setType(Query.Type.DELETE);
String fullTableName = null;
if (tableMap != null)
{
fullTableName = SqlBuilder.getFullTableName(
tableMap.getFullyQualifiedTableName(),
criteria.getDbName());
}
else
{
Column column = criteria.values().iterator().next().getColumn();
fullTableName = SqlBuilder.getFullTableName(
column.getFullTableName(),
criteria.getDbName());
}
boolean ownTableAdded = false;
for (FromElement fromElement : query.getFromClause())
{
// Table names are case insensitive in known databases
// so use case-insensitive compare
if (fullTableName.equalsIgnoreCase(fromElement.getFromExpression()))
{
ownTableAdded = true;
break;
}
}
if (!ownTableAdded)
{
query.getFromClause().add(new FromElement(fullTableName));
}
String sql = query.toString();
PreparedStatement preparedStatement = null;
try
{
preparedStatement = con.prepareStatement(sql);
List<Object> replacements = setPreparedStatementReplacements(
preparedStatement,
query.getPreparedStatementReplacements(),
0);
long startTime = System.currentTimeMillis();
log.debug("Executing delete " + sql
+ ", parameters = "
+ replacements);