@Override
 public <ST> ICompositeQueryFilter<T> addInSubQueryFilter(
     final ModelColumn<T, ?> column,
     final ModelColumn<ST, ?> subQueryColumn,
     final IQuery<ST> subQuery) {
   final IQueryFilter<T> filter =
       new InSubQueryFilter<T>(
           tableName, column.getColumnName(), subQueryColumn.getColumnName(), subQuery);
   return addFilter(filter);
 }
 @Override
 @SuppressWarnings("unchecked")
 public <V> ICompositeQueryFilter<T> addInArrayFilter(
     final ModelColumn<T, ?> column, final V... values) {
   final IQueryFilter<T> filter = new InArrayQueryFilter<T>(column.getColumnName(), values);
   return addFilter(filter);
 }
 @Override
 public ICompositeQueryFilter<T> addCompareFilter(
     final ModelColumn<T, ?> column,
     final Operator operator,
     final Object value,
     final IQueryFilterModifier modifier) {
   return addCompareFilter(column.getColumnName(), operator, value, modifier);
 }
 @Override
 public ICompositeQueryFilter<T> addCompareFilter(
     final ModelColumn<T, ?> column,
     final CompareQueryFilter.Operator operator,
     final Object value) {
   final CompareQueryFilter<T> filter =
       new CompareQueryFilter<T>(column.getColumnName(), operator, value);
   return addFilter(filter);
 }
 @Override
 public <V> ICompositeQueryFilter<T> addNotInArrayFilter(
     final ModelColumn<T, ?> column, final Collection<V> values) {
   return addNotInArrayFilter(column.getColumnName(), values);
 }
 @Override
 public <V> ICompositeQueryFilter<T> addInArrayFilter(
     final ModelColumn<T, ?> column, final Collection<V> values) {
   final IQueryFilter<T> filter = new InArrayQueryFilter<T>(column.getColumnName(), values);
   return addFilter(filter);
 }
 @Override
 public ICompositeQueryFilter<T> addNotNull(final ModelColumn<T, ?> column) {
   final String columnName = column.getColumnName();
   return addNotEqualsFilter(columnName, null);
 }
 @Override
 public ICompositeQueryFilter<T> addNotEqualsFilter(
     final ModelColumn<T, ?> column, final Object value) {
   final String columnName = column.getColumnName();
   return addNotEqualsFilter(columnName, value);
 }
 @Override
 public ICompositeQueryFilter<T> addSubstringFilter(
     final ModelColumn<T, ?> column, final String substring, final boolean ignoreCase) {
   final String columnName = column.getColumnName();
   return addSubstringFilter(columnName, substring, ignoreCase);
 }
 @Override
 public ICompositeQueryFilter<T> addEqualsFilter(
     final ModelColumn<T, ?> column, final Object value) {
   final EqualsQueryFilter<T> filter = new EqualsQueryFilter<T>(column.getColumnName(), value);
   return addFilter(filter);
 }