code: protected String getColName(TableAlias aTableAlias, PathInfo aPathInfo, boolean translate)
      {
          String result = null;
  
          // no translation required, use attribute name
          if (!translate)
          {
              return aPathInfo.column;
          }
  
          // BRJ: special alias for the indirection table has no ClassDescriptor 
          if (aTableAlias.cld == null && M_N_ALIAS.equals(aTableAlias.alias))
          {
              return getIndirectionTableColName(aTableAlias, aPathInfo.path);
          }
  
          // translate attribute name into column name
          FieldDescriptor fld = getFieldDescriptor(aTableAlias, aPathInfo);
  
          if (fld != null)
          {
              m_attrToFld.put(aPathInfo.path, fld);
  
              // added to suport the super reference descriptor
              if (!fld.getClassDescriptor().getFullTableName().equals(aTableAlias.table) && aTableAlias.hasJoins())
              {
                  Iterator itr = aTableAlias.joins.iterator();
                  while (itr.hasNext())
                  {
                      Join join = (Join) itr.next();
                      if (join.right.table.equals(fld.getClassDescriptor().getFullTableName()))
                      {
                          result = join.right.alias + "." + fld.getColumnName();
                          break;
                      }
                  }
  
                  if (result == null)
                  {
                      result = aPathInfo.column;
                  }
              }
              else
              {
                  result = aTableAlias.alias + "." + fld.getColumnName();
              }
          }
          else if ("*".equals(aPathInfo.column))
          {
              result = aPathInfo.column;
          }
          else
          {
              // throw new IllegalArgumentException("No Field found for : " + aPathInfo.column);
              result = aPathInfo.column;
          }
  
          return result;
      }
docs: Answer the column name for alias and path info<br>
  if translate try to convert attribute name into column name otherwise use attribute name<br>
  if a FieldDescriptor is found for the attribute name the column name is taken from
  there prefixed with the alias (firstname -> A0.F_NAME).