private P filterLargeValueSets(FilterSpec fs,MetaDataObject rootMeta,F root,boolean forceEntityBased,JoinType defaultPredicateJoinType){
  ArrayList<FilterSpec> specs=new ArrayList<>();
  List<?> list=new ArrayList<>((Collection<?>)fs.getValue());
  for (int i=0; i < list.size(); i+=ORACLE_PARAM_LIMIT) {
    int nextOffset=i + Math.min(list.size() - i,ORACLE_PARAM_LIMIT);
    List<?> batchList=list.subList(i,nextOffset);
    specs.add(new FilterSpec(fs.getAttributePath(),fs.getOperator(),batchList));
  }
  FilterSpec orSpec=FilterSpec.or(specs);
  return filterSpecListToPredicate(rootMeta,root,orSpec,forceEntityBased,defaultPredicateJoinType);
}

private P filterLargeValueSets ( FilterSpec fs , MetaDataObject rootMeta , F root , boolean forceEntityBased , JoinType defaultPredicateJoinType ) { ArrayList < FilterSpec > specs = new ArrayList < > ( ) ; List < ? > list = new ArrayList < > ( ( Collection < ? > ) fs . getValue ( ) ) ; for ( int i = 0 ; i < list . size ( ) ; i += ORACLE_PARAM_LIMIT ) { int nextOffset = i + Math . min ( list . size ( ) - i , ORACLE_PARAM_LIMIT ) ; List < ? > batchList = list . subList ( i , nextOffset ) ; specs . add ( new FilterSpec ( fs . getAttributePath ( ) , fs . getOperator ( ) , batchList ) ) ; } FilterSpec orSpec = FilterSpec . or ( specs ) ; return filterSpecListToPredicate ( rootMeta , root , orSpec , forceEntityBased , defaultPredicateJoinType ) ; }
split filters with two many value possibilities . for example , oracle cannot handle more than 1000 .
