code: private List onQuery(EntityMetadata m, Client client)
      {
          // Called only in case of standalone entity.
          QueryTranslator translator = new QueryTranslator();
          translator.translate(getKunderaQuery(), m, ((ClientBase) client).getClientMetadata());
          // start with 1 as first element is alias.
          List<String> columns = getTranslatedColumns(m, getKunderaQuery().getResult(), 1);
          Filter filter = translator.getFilter();
          if (translator.rowList != null && !translator.rowList.isEmpty())
          {
              return ((HBaseClient) client).findAll(m.getEntityClazz(), columns.toArray(new String[columns.size()]),
                      translator.getRowList());
          }
          if (!translator.isWhereQuery() && columns != null)
          {
              return ((HBaseClient) client).findByRange(m.getEntityClazz(), m, translator.getStartRow(), translator
                      .getEndRow(), columns.toArray(new String[columns.size()]), null, getKunderaQuery()
                      .getFilterClauseQueue());
          }
  
          if (MetadataUtils.useSecondryIndex(((ClientBase) client).getClientMetadata()))
          {
              // if range query. means query over id column. create range
              // scan method.
  
              // else setFilter to client and invoke new method. find by
              // query if isFindById is false! else invoke findById
              if (translator.isWhereQuery() && !translator.isRangeScan())
              {
                  return ((HBaseClient) client).findByQuery(m.getEntityClazz(), m, filter, getKunderaQuery()
                          .getFilterClauseQueue(), columns.toArray(new String[columns.size()]));
              }
              else
              {
                  return ((HBaseClient) client).findByRange(m.getEntityClazz(), m, translator.getStartRow(), translator
                          .getEndRow(), columns.toArray(new String[columns.size()]), filter, getKunderaQuery()
                          .getFilterClauseQueue());
              }
          }
          else
          {
              return populateUsingLucene(m, client, null, null);
          }
      }
docs: Parses and translates query into HBase filter and invokes client's method
  to return list of entities.
  
  @param m
  Entity metadata
  @param client
  hbase client
  @return list of entities.