code: public static String buildDeleteSql(BeanDescFactory beanDescFactory, EntityOperator entityOperator, Class<?> entityType, NameConverter nameConverter,
              List<PropertyDesc> propDescs){
          StringBuilder sb = new StringBuilder();
          sb.append("DELETE FROM ").append(getTableName(entityType, nameConverter));
          sb.append(" WHERE ");
  
          boolean hasPrimaryKey = false;
  
          BeanDesc beanDesc = beanDescFactory.getBeanDesc(entityType);
  
          for(int i=0;i<beanDesc.getPropertyDescSize();i++){
              PropertyDesc pd = beanDesc.getPropertyDesc(i);
              PrimaryKeyInfo primaryKey = entityOperator.getPrimaryKeyInfo(entityType, pd, nameConverter);
              if(primaryKey != null && pd.isReadable()){
                  if(!propDescs.isEmpty()){
                      sb.append(" AND ");
                  }
                  sb.append(getColumnName(entityOperator, entityType, pd, nameConverter)).append(" = ?");
                  propDescs.add(pd);
                  hasPrimaryKey = true;
              }
          }
  
          if(hasPrimaryKey == false){
              throw new RuntimeException(
                      "Primary key is not found: " + entityType.getName());
          }
  
          return sb.toString();
      }
docs: Builds delete SQL and correct parameters from the entity.
  
  @param beanDescFactory the bean descriptor factory
  @param entityOperator the entity operator
  @param entityType the entity class to delete
  @param nameConverter the name converter
  @param propDescs the list of parameters
  
  @return Delete SQL
  @deprecated use {@link #buildDeleteSql(String, BeanDescFactory, EntityOperator, Object, NameConverter, List)} instead