grails - Including the max and offset criteria inside GORM criteriaBuilder returns an error -


can make code shorter?

if(count == null && = null) {     creditadvicelist = creditadvice.findall {         ilike('id', "%$idfilter%")         .....         ilike('statuscode', statuscodefilter)     } } else if(count != null && == null) {     creditadvicelist = creditadvice.findall(max: count) {         ilike('id', "%$idfilter%")         .....         ilike('statuscode', statuscodefilter)     } } else if(count == null && != null) {     creditadvicelist = creditadvice.findall(offset: from) {         ilike('id', "%$idfilter%")         .....         ilike('statuscode', statuscodefilter)     } } else if(count != null && != null) {     creditadvicelist = creditadvice.findall(max: count, offset: from) {         ilike('id', "%$idfilter%")         .....         ilike('statuscode', statuscodefilter)     } } 

you see, series if statement each possible scenario. imagine if 1 use order , cache in parameter- there 16 unique if statements!

i've tried [more] shorter code:

creditadvicelist = creditadvice.findall {     ilike('id', "%$idfilter%")     .....     ilike('statuscode', statuscodefilter)      if(count != null) {         maxresults(count)     }     if(from != null) {         firstresult(from)     } } 

but gives me error:

...no signature of method: grails.gorm.detachedcriteria.maxresults() applicable argument types: (java.lang.integer)...

i tried convert offset int, integer, string, etc. omit if statement inside criteria, same error message occur.

findall closure passed using detachedcriteria internally, not same result createcriteria mentioned in docs. if groovy find "something close" enough, tell in error message. easiest way deal max/from demands map (which first argument passed). e.g.:

def qcfg = [:] if (count) {     qcfg.count = count } if (from) {     qcfg.offset = } creditadvicelist = creditadvice.findall(qcfg) { ... } 

mix, match, extract, shorten see fit


Comments