jjelliott opened a new issue, #14451:
URL: https://github.com/apache/grails-core/issues/14451

   [Sample project](https://github.com/jjelliott/grails-composite-key-bug)
   
   - **Operating System**:  Windows 10
   - **GORM Version:** 7.0.1 (`org.grails.plugins:hibernate5:7.0.1`)
   - **Grails Version (if using Grails):** 4.0.0.RC2
   - **JDK Version:** 8
   
   Given the following domains:
   ```groovy
   class ExampleRole {
       
       String name
   
       static constraints = {
       }
   }
   ```
   ```groovy
   class ExampleUser {
       
       String name
   
       static constraints = {
       }
   ```
   ```groovy
   class UserRole implements Serializable{
       
       ExampleUser user
       ExampleRole role
   
       static mapping = {
           id composite: ['user', 'role']
       }
       
       static constraints = {
       }
   }
   ```
   
   If you attempt to call the following method, there will be a 
NullPointerException thrown
   ```groovy
   UserRole.list(sort: "role")
   ```
   
   The code causing the issue is line 306 of GrailsHibernateQueryUtils:
   ```java
   if (sort.equalsIgnoreCase(entity.getIdentity().getName())) {
   ```
   
   
   Full stacktrace:
   ```
   java.lang.reflect.InvocationTargetException: null
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
           at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:498)
           at 
org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:211)
           at 
org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
           at 
org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
           at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
           at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
           at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
           at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
           at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
           at 
org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
           at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
           at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
           at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
           at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
           at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
           at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
           at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
           at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
           at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
           at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
           at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
           at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
           at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
           at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
           at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
           at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
           at java.lang.Thread.run(Thread.java:748)
   Caused by: java.lang.NullPointerException: null
           at 
org.grails.orm.hibernate.query.GrailsHibernateQueryUtils.addOrder(GrailsHibernateQueryUtils.java:306)
           at 
org.grails.orm.hibernate.query.GrailsHibernateQueryUtils.addOrderPossiblyNested(GrailsHibernateQueryUtils.java:280)
           at 
org.grails.orm.hibernate.query.GrailsHibernateQueryUtils.populateArgumentsForCriteria(GrailsHibernateQueryUtils.java:169)
           at 
org.grails.orm.hibernate.HibernateGormStaticApi$_list_closure1.doCall(HibernateGormStaticApi.groovy:88)
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
           at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
           at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
           at java.lang.reflect.Method.invoke(Method.java:498)
           at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
           at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
           at 
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
           at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
           at groovy.lang.Closure.call(Closure.java:405)
           at 
org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:50)
           at 
org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:122)
           at com.sun.proxy.$Proxy122.doInHibernate(Unknown Source)
           at 
org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:297)
           at 
org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:241)
           at 
org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:120)
           at 
org.grails.orm.hibernate.HibernateGormStaticApi.list(HibernateGormStaticApi.groovy:78)
           at 
org.grails.datastore.gorm.GormEntity$Trait$Helper.list(GormEntity.groovy:673)
           at 
org.grails.datastore.gorm.GormEntity$Trait$Helper$list$1.call(Unknown Source)
           at 
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
           at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
           at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135)
           at compositekey.UserRole.list(UserRole.groovy)
           at compositekey.UserRole$list.call(Unknown Source)
           at 
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
           at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
           at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
           at 
compositekey.CompositeKeyController.index(CompositeKeyController.groovy:8)
           ... 60 common frames omitted
   ```
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to