/**
   * Método para setar o where da query.
   *
   * @param type - tipo da condição
   * @param entiyClass - entidade
   * @param entityAlias - alias da entidade
   * @param fieldName - nome do campo
   * @param value - valor
   */
  public void where(
      ConditionDBTypes type,
      Class<?> entiyClass,
      String entityAlias,
      String fieldName,
      Object... value) {

    this.where = ConditionBuilder.newCondition(entiyClass, entityAlias, type, fieldName, value);
  }
  /**
   * Método que cria um condição para o where.
   *
   * @param entityClass - classe de entidade
   * @param aliasTable - alias da tabela
   * @param fieldName - nome do campo
   * @param conditionType - tipo da condição
   * @param subselect - query do subselect
   */
  public void where(
      ConditionDBTypes conditionType,
      Class<?> entityClass,
      String aliasTable,
      String fieldName,
      SelectBuilder subselect) {

    this.where =
        ConditionBuilder.newSubselectCondition(
            entityClass, aliasTable, fieldName, conditionType, subselect);
  }
  /**
   * Método para setar o alias do from da consulta.
   *
   * @param fromAlias - alias do from
   */
  public void fromAlias(String fromAlias) {

    this.fromAlias = fromAlias;
    this.select.alias(fromAlias);

    ConditionBuilder.updateAliasForCondition(this.where, entityClass, fromAlias);

    if (this.orderBy != null) {
      this.orderBy.setFromAlias(fromAlias);
    }

    if (this.groupBy != null) {
      this.groupBy.setFromAlias(fromAlias);
    }

    for (Join j : joins) {
      if (j.getClazzFrom().equals(entityClass)) {
        j.fromAlias(fromAlias);
      }
    }
  }