apache / apache/grails-core

3.3.9 Can't find count method in createCriteria()

Open
#14,456 1 comment 0 reactions 0 assignees View on GitHub
relates-to: grails-data-hibernate5
Dominant language
Groovy
Stars
2.9k
Forks
975
Avg merge
1d 22h
Merged PRs (30d)
92

Description

def c = User.createCriteria()
def queryString = "ilike('username', '%ad%')"
def query = ParamsHelper.buildparams(params)
def rows = c.list(offset: query.offset, max: query.limit) {
queryString
order(query.sort, query.order)
}

def total = c.count() {
queryString
order(query.sort, query.order)
}

->> 211 | invoke in org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 188 | invoke in org.grails.core.DefaultGrailsControllerClass
| 90 | handle . . . . . in org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter
| 967 | doDispatch in org.springframework.web.servlet.DispatcherServlet
| 901 | doService . . . in ''
| 970 | processRequest in org.springframework.web.servlet.FrameworkServlet
| 861 | doGet . . . . . in ''
| 846 | service in ''
| 55 | doFilterInternal in org.springframework.boot.web.filter.ApplicationContextHeaderFilter
| 317 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 127 | invoke . . . . . in org.springframework.security.web.access.intercept.FilterSecurityInterceptor
| 91 | doFilter in ''
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 114 | doFilter in org.springframework.security.web.access.ExceptionTranslationFilter
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilterInternal in grails.plugin.springsecurity.web.filter.GrailsHttpPutFormContentFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilter . . . . in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 158 | doFilter . . . . in org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 170 | doFilter . . . . in org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 139 | doFilter . . . . in grails.plugin.springsecurity.rest.RestAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 200 | doFilter . . . . in org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 82 | doFilter . . . . in grails.plugin.springsecurity.rest.RestLogoutFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 105 | doFilter . . . . in org.springframework.security.web.context.SecurityContextPersistenceFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 58 | doFilter . . . . in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 214 | doFilterInternal in org.springframework.security.web.FilterChainProxy
| 177 | doFilter in ''
| 77 | doFilterInternal in org.grails.web.servlet.mvc.GrailsWebRequestFilter
| 67 | doFilterInternal in org.grails.web.filters.HiddenHttpMethodFilter
| 33 | doFilterInternal in org.grails.plugins.springsession.web.http.HttpSessionSynchronizer
| 171 | doFilterInternal in org.springframework.session.web.http.SessionRepositoryFilter
| 80 | doFilter . . . . in org.springframework.session.web.http.OncePerRequestFilter
| 1149 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 624 | run . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 748 | run in java.lang.Thread

Caused by IllegalArgumentException: call to [count] not supported here
->> 1607 | invokeMethod in org.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 28 | list in UserController.groovy
| 211 | invoke . . . . . in org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker
| 188 | invoke in org.grails.core.DefaultGrailsControllerClass
| 90 | handle . . . . . in org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter
| 967 | doDispatch in org.springframework.web.servlet.DispatcherServlet
| 901 | doService . . . in ''
| 970 | processRequest in org.springframework.web.servlet.FrameworkServlet
| 861 | doGet . . . . . in ''
| 846 | service in ''
| 55 | doFilterInternal in org.springframework.boot.web.filter.ApplicationContextHeaderFilter
| 317 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 127 | invoke . . . . . in org.springframework.security.web.access.intercept.FilterSecurityInterceptor
| 91 | doFilter in ''
| 331 | doFilter . . . . in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 114 | doFilter in org.springframework.security.web.access.ExceptionTranslationFilter
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilterInternal in grails.plugin.springsecurity.web.filter.GrailsHttpPutFormContentFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 54 | doFilter . . . . in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 158 | doFilter . . . . in org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 170 | doFilter . . . . in org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 139 | doFilter . . . . in grails.plugin.springsecurity.rest.RestAuthenticationFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 200 | doFilter . . . . in org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 64 | doFilter . . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 82 | doFilter . . . . in grails.plugin.springsecurity.rest.RestLogoutFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 105 | doFilter . . . . in org.springframework.security.web.context.SecurityContextPersistenceFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 58 | doFilter . . . . in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
| 331 | doFilter in org.springframework.security.web.FilterChainProxy$VirtualFilterChain
| 214 | doFilterInternal in org.springframework.security.web.FilterChainProxy
| 177 | doFilter in ''
| 77 | doFilterInternal in org.grails.web.servlet.mvc.GrailsWebRequestFilter
| 67 | doFilterInternal in org.grails.web.filters.HiddenHttpMethodFilter
| 33 | doFilterInternal in org.grails.plugins.springsession.web.http.HttpSessionSynchronizer
| 171 | doFilterInternal in org.springframework.session.web.http.SessionRepositoryFilter
| 80 | doFilter . . . . in org.springframework.session.web.http.OncePerRequestFilter
| 1149 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 624 | run . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^ 748 | run in java.lang.Thread

Contributor guide

Open the contributing guide

Research direction

Start with UserController.groovy around line 28 and trace the createCriteria() call into AbstractHibernateCriteriaBuilder.invokeMethod at line 1607. Reproduce the reported IllegalArgumentException for count(), then determine the expected criteria-count behavior and verify it with a focused test; done means the documented usage no longer raises the reported error.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy
Domain
backend, database
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.