code: @Override
    public <C> List<C> retrieveBeans(String name, C criteria, CpoWhere where, Collection<CpoOrderBy> orderBy) throws CpoException {
      ArrayList<CpoWhere> wheres = null;
      if (where != null) {
        wheres = new ArrayList<>();
        wheres.add(where);
      }
      return processSelectGroup(name, criteria, criteria, wheres, orderBy, null, false);
    }
docs: Retrieves the bean from the datasource. The assumption is that the bean exists in the datasource.
  
  @param name     The filter name which tells the datasource which beans should be returned. The name also signifies what
  data in the bean will be populated.
  @param criteria This is an bean that has been defined within the metadata of the datasource. If the class is not
  defined an exception will be thrown. If the bean does not exist in the datasource, an exception will be thrown.
  This bean is used to specify the arguments used to retrieve the collection of beans.
  @param where    A CpoWhere bean that defines the constraints that should be used when retrieving beans
  @param orderBy  The CpoOrderBy bean that defines the order in which beans should be returned
  @return A collection of beans will be returned that meet the criteria specified by obj. The beans will be of the
  same type as the bean that was passed in. If no beans match the criteria, an empty collection will be returned
  @throws CpoException Thrown if there are errors accessing the datasource