mftruso opened a new issue, #14606: URL: https://github.com/apache/grails-core/issues/14606
Thanks for reporting an issue for Grails framework, please review the task list below before submitting the issue. Your issue report will be closed if the issue is incomplete and the below tasks not completed. NOTE: If you are unsure about something and the issue is more of a question a better place to ask questions is on Stack Overflow (http://stackoverflow.com/tags/grails) or Slack (http://slack-signup.grails.org). DO NOT use the issue tracker to ask questions. ### Task List - [X] Steps to reproduce provided - [X] Stacktrace (if present) provided - [X] Example that reproduces the problem uploaded to Github - [X] Full description of the issue provided (see below) ### Steps to Reproduce Using the dynamic finder `InList` causes an error In my sample application: 1. Run app `./gradlew bootRun` 2. Browse to `http://localhost:8080/author/countByCategory?category=Fiction` ``` def countByCategory(){ String category = params.category List books = Book.findAllByCategory(category) def count = Author.countByBooksInList(books) render ([count: count] as JSON) } ``` 3. Browse to `http://localhost:8080/author/listByCategory?category=Fiction` ``` def listByCategory(){ String category = params.category List books = Book.findAllByCategory(category) List authors = Author.findAllByBooksInList(books) render authors as JSON } ``` ### Expected Behaviour `Author.countByBooksInList(books) == 1` and `Author.findAllByBooksInList(books).size() == 1` ### Actual Behaviour countBy ``` 2017-08-30 10:26:45.302 ERROR --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : Parameter "#2" is not set; SQL statement: select count(*) as y0_ from author this_ where this_.id in (?, ?) limit ? [90012-195] 2017-08-30 10:26:45.379 ERROR --- [nio-8080-exec-1] o.g.web.errors.GrailsExceptionResolver : JdbcSQLException occurred when processing request: [GET] /author/countByCategory - parameters: category: Fiction Parameter "#2" is not set; SQL statement: select count(*) as y0_ from author this_ where this_.id in (?, ?) limit ? [90012-195]. Stacktrace follows: java.lang.reflect.InvocationTargetException: null 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:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) at org.hibernate.loader.Loader.getResultSet(Loader.java:2122) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1905) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1881) at org.hibernate.loader.Loader.doQuery(Loader.java:925) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342) at org.hibernate.loader.Loader.doList(Loader.java:2622) at org.hibernate.loader.Loader.doList(Loader.java:2605) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2434) at org.hibernate.loader.Loader.list(Loader.java:2429) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:109) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1787) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363) at org.grails.orm.hibernate.query.AbstractHibernateQuery.singleResultViaListCall(AbstractHibernateQuery.java:801) at org.grails.orm.hibernate.query.AbstractHibernateQuery.singleResult(AbstractHibernateQuery.java:791) at org.grails.datastore.gorm.finders.CountByFinder.invokeQuery(CountByFinder.java:55) at org.grails.datastore.gorm.finders.CountByFinder$1.doInSession(CountByFinder.java:49) at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:319) at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:42) at org.grails.datastore.gorm.finders.CountByFinder.doInvokeInternal(CountByFinder.java:46) at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:252) at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:390) at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:185) at org.grails.datastore.gorm.GormEntity$Trait$Helper.staticMethodMissing(GormEntity.groovy:756) at testcountinlist.AuthorController.countByCategory(AuthorController.groovy:14) ... 14 common frames omitted Caused by: org.h2.jdbc.JdbcSQLException: Parameter "#2" is not set; SQL statement: select count(*) as y0_ from author this_ where this_.id in (?, ?) limit ? [90012-195] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) at org.h2.message.DbException.get(DbException.java:179) at org.h2.message.DbException.get(DbException.java:155) at org.h2.expression.Parameter.checkSet(Parameter.java:81) at org.h2.command.Prepared.checkParameters(Prepared.java:164) at org.h2.command.CommandContainer.query(CommandContainer.java:112) at org.h2.command.Command.executeQuery(Command.java:201) at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70) ``` findAllBy ``` 2017-08-30 10:28:11.644 ERROR --- [nio-8080-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : Parameter "#1" is not set; SQL statement: select this_.id as id1_0_0_, this_.version as version2_0_0_, this_.name as name3_0_0_ from author this_ where this_.id in (?, ?) [90012-195] 2017-08-30 10:28:11.653 ERROR --- [nio-8080-exec-9] o.g.web.errors.GrailsExceptionResolver : JdbcSQLException occurred when processing request: [GET] /author/listByCategory - parameters: category: Fiction Parameter "#1" is not set; SQL statement: select this_.id as id1_0_0_, this_.version as version2_0_0_, this_.name as name3_0_0_ from author this_ where this_.id in (?, ?) [90012-195]. Stacktrace follows: java.lang.reflect.InvocationTargetException: null 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:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.hibernate.exception.GenericJDBCException: could not extract ResultSet at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79) at org.hibernate.loader.Loader.getResultSet(Loader.java:2122) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1905) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1881) at org.hibernate.loader.Loader.doQuery(Loader.java:925) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342) at org.hibernate.loader.Loader.doList(Loader.java:2622) at org.hibernate.loader.Loader.doList(Loader.java:2605) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2434) at org.hibernate.loader.Loader.list(Loader.java:2429) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:109) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1787) at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363) at org.grails.orm.hibernate.query.AbstractHibernateQuery.listForCriteria(AbstractHibernateQuery.java:716) at org.grails.orm.hibernate.query.AbstractHibernateQuery.list(AbstractHibernateQuery.java:706) at org.grails.datastore.gorm.finders.FindAllByFinder.invokeQuery(FindAllByFinder.java:54) at org.grails.datastore.gorm.finders.FindAllByFinder$1.doInSession(FindAllByFinder.java:48) at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:319) at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:42) at org.grails.datastore.gorm.finders.FindAllByFinder.doInvokeInternal(FindAllByFinder.java:45) at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:252) at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:390) at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:185) at org.grails.datastore.gorm.GormEntity$Trait$Helper.staticMethodMissing(GormEntity.groovy:756) at testcountinlist.AuthorController.listByCategory(AuthorController.groovy:21) ... 14 common frames omitted Caused by: org.h2.jdbc.JdbcSQLException: Parameter "#1" is not set; SQL statement: select this_.id as id1_0_0_, this_.version as version2_0_0_, this_.name as name3_0_0_ from author this_ where this_.id in (?, ?) [90012-195] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) at org.h2.message.DbException.get(DbException.java:179) at org.h2.message.DbException.get(DbException.java:155) at org.h2.expression.Parameter.checkSet(Parameter.java:81) at org.h2.command.Prepared.checkParameters(Prepared.java:164) at org.h2.command.CommandContainer.query(CommandContainer.java:112) at org.h2.command.Command.executeQuery(Command.java:201) at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:111) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70) ... 38 common frames omitted ``` ### Environment Information - **Operating System**: macOS 10.12.6 - **Grails Version:** 3.3.0 - **JDK Version:** 1.8 ### Example Application https://github.com/mftruso/testcountinlist -- 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]
