class AbstractDao implements CrudDao<T, ID> {

  protected Iterable<T> queryByField(Object ancestorKey, String fieldName, Object fieldValue) {
    Iterable values = supplier.queryIterable(getCurrentTransaction(), mapper, false, 0, -1,
      ancestorKey, null,
      null, false, null, false,
      Filter.equalsFilter(fieldName, fieldValue));
    return new MappingIterable<T, ID>(mapper, values.iterator());
  }

  protected  AbstractDao(Mapper<T, ID> mapper, Supplier<Object, Object, Object, Object> supplier);

}