docs: @Override
    protected void deleteEntity(DbEntityOperation operation) {
  
      final DbEntity dbEntity = operation.getEntity();
  
      // get statement
      String deleteStatement = dbSqlSessionFactory.getDeleteStatement(dbEntity.getClass());
      ensureNotNull("no delete statement for " + dbEntity.getClass() + " in the ibatis mapping files", "deleteStatement", deleteStatement);
  
      LOG.executeDatabaseOperation("DELETE", dbEntity);
  
      // execute the delete
      int nrOfRowsDeleted = executeDelete(deleteStatement, dbEntity);
      operation.setRowsAffected(nrOfRowsDeleted);
  
      // It only makes sense to check for optimistic locking exceptions for objects that actually have a revision
      if (dbEntity instanceof HasDbRevision && nrOfRowsDeleted == 0) {
        operation.setFailed(true);
        return;
      }
  
      // perform post delete action
      entityDeleted(dbEntity);
    }