Great. I am glad there was an easy fix :)

> On Apr 24, 2016, at 3:08 PM, Fredrik Widengren <[email protected]> 
> wrote:
> 
> Hello Andrus,
> 
> Problem seam to have been the driver version for MariaDB. I now use the
> same as you 1.4.2.
> 
> Many thanks for the help!
> 
> Best regards,
> Fredrik
> 
> 
> 
> 2016-04-22 20:56 GMT+02:00 Andrus Adamchik <[email protected]>:
> 
>> I finally got around to building an environment on the same version of
>> MariaDB. I used the following simplified versions of 2 stored procedures
>> (as of course I don't have the exact definitions of your tables) :
>> 
>> DELIMITER $$
>> CREATE DEFINER=`root`@`localhost` PROCEDURE
>> `readShoplistIngredientsSortedByStore`(IN `id_shoplist` INT, IN `id_store`
>> INT)
>>   NO SQL
>> BEGIN
>> CALL StoreDepartments(id_store);
>> SELECT * from departments WHERE id > id_shoplist;
>> END$$
>> 
>> CREATE DEFINER=`root`@`localhost` PROCEDURE
>> `StoreDepartments`(IN `id_store` INT)
>>   NO SQL
>> BEGIN
>> INSERT INTO departments VALUES();
>> END$$
>> DELIMITER ;
>> 
>> .. and it worked. No errors, I get data and all... I tried with both
>> mysql-connector v. 5.1.38 and mariadb-java-client v. 1.4.3 drivers. No
>> difference. It always works. Also tried with Cayenne 3.1 and 4.0.M3. No
>> difference again.
>> 
>> What version of the driver are you using?
>> 
>> Also repeating my question about the contents of "StoreDepartments" stored
>> procedure. Maybe there's something unusual about it?
>> 
>> Andrus
>> 
>> 
>> 
>>> On Apr 22, 2016, at 10:00 AM, Andrus Adamchik <[email protected]>
>> wrote:
>>> 
>>> Thanks for more info. Trying to find time to setup a test env with your
>> exact procedure.
>>> 
>>>>> CALL StoreDepartments(id_store);
>>> 
>>> I asked before, but I don't see you mentioning it anywhere.
>> 'StoreDepartments' is called from within
>> 'readShoplistIngredientsSortedByStore'. Could you post a definition of
>> 'StoreDepartments'?
>>> 
>>> Thanks,
>>> Andrus
>>> 
>>> 
>>>> On Apr 22, 2016, at 7:54 AM, Fredrik Widengren <
>> [email protected]> wrote:
>>>> 
>>>> Hello Andrus,
>>>> 
>>>> I'm now running Cayenne 4.0.M3.
>>>> 
>>>> However, seem like I get the same error on this procedure call. I'm
>> using
>>>> some other procedures which work fine. The difference is that they only
>>>> return one value which also is declared as OUT parameter. This is also
>>>> reflected in the datamap.xml file.
>>>> 
>>>> The procedure I'm tryign to run now returns a list and does not declare
>> any
>>>> OUT parameters. The datamap does only contain in parameters.
>>>> 
>>>> I get the error when calling:
>>>>          QueryResponse result = context.performGenericQuery(query);
>>>> 
>>>> Any ideas? Thanks for the help!
>>>> 
>>>> /Fredrik
>>>> 
>>>> 
>>>> Stack trace:
>>>> INFO: {call readShoplistIngredientsSortedByStore(?, ?)} [bind: 1:0, 2:4]
>>>> apr 22, 2016 6:47:02 FM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>> logSelectCount
>>>> INFO: === returned 0 rows. - took 1 ms.
>>>> apr 22, 2016 6:47:02 FM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>> logQueryError
>>>> INFO: *** error.
>>>> java.lang.NullPointerException
>>>>  at
>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.processResultSet(MySQLProcedureAction.java:88)
>>>>  at
>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.performAction(MySQLProcedureAction.java:71)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
>>>>  at
>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:306)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:439)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:71)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction$2.perform(DataDomainQueryAction.java:412)
>>>>  at
>>>> 
>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:53)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:409)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:121)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:559)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:730)
>>>>  at
>>>> 
>> org.apache.cayenne.tx.TransactionFilter.onQuery(TransactionFilter.java:49)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:730)
>>>>  at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:551)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
>>>>  at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:985)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataContext.performGenericQuery(DataContext.java:944)
>>>>  at
>>>> 
>> controller.PrintController.getSortedIngredients(PrintController.java:168)
>>>>  at controller.PrintController.setLocalObject(PrintController.java:91)
>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>  at
>>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>  at
>>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>  at java.lang.reflect.Method.invoke(Method.java:601)
>>>>  at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
>>>>  at
>>>> org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
>>>>  at
>>>> 
>> org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
>>>>  at
>>>> 
>> org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
>>>>  at
>>>> 
>> com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
>>>>  at
>>>> 
>> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
>>>>  at
>>>> 
>> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
>>>>  at javax.faces.component.UIViewAction.broadcast(UIViewAction.java:559)
>>>>  at
>> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
>>>>  at
>>>> 
>> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
>>>>  at
>>>> 
>> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
>>>>  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>>>>  at
>> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
>>>>  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>  at
>>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>>  at
>>>> 
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>>  at
>>>> 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>>  at
>>>> 
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>  at
>>>> 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>>>  at
>>>> 
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>>>>  at
>>>> 
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>>>>  at
>>>> 
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>>  at
>>>> 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>  at
>>>> 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>  at java.lang.Thread.run(Thread.java:722)
>>>> 
>>>> catch exception
>>>> org.apache.cayenne.CayenneRuntimeException: [v.4.0.M3 Feb 08 2016
>> 17:09:41]
>>>> Query exception.
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.nextQueryException(DataDomainQueryAction.java:582)
>>>>  at
>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:312)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:439)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:71)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction$2.perform(DataDomainQueryAction.java:412)
>>>>  at
>>>> 
>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:53)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:409)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:121)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:559)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:730)
>>>>  at
>>>> 
>> org.apache.cayenne.tx.TransactionFilter.onQuery(TransactionFilter.java:49)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:730)
>>>>  at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:551)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
>>>>  at
>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
>>>>  at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:985)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataContext.performGenericQuery(DataContext.java:944)
>>>>  at
>>>> 
>> controller.PrintController.getSortedIngredients(PrintController.java:168)
>>>>  at controller.PrintController.setLocalObject(PrintController.java:91)
>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>  at
>>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>  at
>>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>  at java.lang.reflect.Method.invoke(Method.java:601)
>>>>  at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
>>>>  at
>>>> org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
>>>>  at
>>>> 
>> org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
>>>>  at
>>>> 
>> org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
>>>>  at
>>>> 
>> com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
>>>>  at
>>>> 
>> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
>>>>  at
>>>> 
>> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
>>>>  at javax.faces.component.UIViewAction.broadcast(UIViewAction.java:559)
>>>>  at
>> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
>>>>  at
>>>> 
>> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
>>>>  at
>>>> 
>> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
>>>>  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>>>>  at
>> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
>>>>  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>  at
>>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>>  at
>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>>  at
>>>> 
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>>  at
>>>> 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>>  at
>>>> 
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
>>>>  at
>>>> 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>>>>  at
>>>> 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>>>  at
>>>> 
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>>>>  at
>>>> 
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>>>>  at
>>>> 
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
>>>>  at
>>>> 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>>>  at
>>>> 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>>>  at java.lang.Thread.run(Thread.java:722)
>>>> Caused by: java.lang.NullPointerException
>>>>  at
>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.processResultSet(MySQLProcedureAction.java:88)
>>>>  at
>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.performAction(MySQLProcedureAction.java:71)
>>>>  at
>>>> 
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
>>>>  at
>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:306)
>>>>  ... 55 more
>>>> End of setLocalObject
>>>> 
>>>> 2016-04-20 6:10 GMT+02:00 Fredrik Widengren <
>> [email protected]>:
>>>> 
>>>>> Hello Andrus,
>>>>> Thanks for trying to help out. I'm using MariaDB
>>>>> (10.1.12-MariaDB-1~trusty), (org.mariadb.jdbc.Driver, JAR file
>>>>> mariadb-java-client-1.2.0.jar).
>>>>> 
>>>>> I can check Cayenne version 4.0.M3 also.
>>>>> 
>>>>> /Fredrik
>>>>> 
>>>>> Here's the stored procedure I try to call.
>>>>> 
>>>>> CREATE DEFINER=`foodbase_admin`@`localhost` PROCEDURE
>>>>> `readShoplistIngredientsSortedByStore`(IN `id_shoplist` INT, IN
>> `id_store`
>>>>> INT)
>>>>>  NO SQL
>>>>> BEGIN
>>>>> 
>>>>> CALL StoreDepartments(id_store);
>>>>> 
>>>>> SELECT departments.Name AS Department, shoppinglist_items.Amount AS
>>>>> Amount, units.Name AS Unit, groceries.Name AS Groceries
>>>>> FROM shoppinglist_items
>>>>> JOIN groceries ON
>>>>> groceries.ID=shoppinglist_items.ID_groceries
>>>>> JOIN storedepartmentsorder ON
>>>>> groceries.ID_departments=storedepartmentsorder.ID_departments
>>>>> JOIN units ON
>>>>> units.ID=shoppinglist_items.ID_units
>>>>> JOIN departments ON
>>>>> departments.ID=groceries.ID_departments
>>>>> WHERE shoppinglist_items.ID_shoppinglists=id_shoplist
>>>>> ORDER BY storedepartmentsorder.deptorder, groceries.Name
>>>>> ;
>>>>> 
>>>>> END
>>>>> 
>>>>> 
>>>>> 
>>>>> 2016-04-19 9:12 GMT+02:00 Andrus Adamchik <[email protected]>:
>>>>> 
>>>>>> Hi Fredrik,
>>>>>> 
>>>>>> Sorry for late reply. So from the stack trace this is Cayenne 3.1:
>>>>>> 
>>>>>> 
>>>>>> 
>> https://github.com/apache/cayenne/blob/STABLE-3.1/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLProcedureAction.java#L101
>>>>>> 
>>>>>> Interesting ... So Cayenne thinks there's a ResultSet, while there's
>>>>>> none. We have a very similar stored procedure in Cayenne unit tests
>> and it
>>>>>> works fine on MySQL.
>>>>>> 
>>>>>> Wondering what version of MySQL you are using? And can you also post
>> the
>>>>>> contents of "StoreDepartments" procedure? Perhaps I'll be able to
>> reproduce.
>>>>>> 
>>>>>> Also would it be possible for you to try it with Cayenne 4.0.M3?
>>>>>> 
>>>>>> Andrus
>>>>>> 
>>>>>> 
>>>>>>> On Apr 14, 2016, at 11:17 PM, Fredrik Widengren <
>>>>>> [email protected]> wrote:
>>>>>>> 
>>>>>>> Hello,
>>>>>>> 
>>>>>>> I'm trying to launch a stored procedure which is returning rows with
>> a
>>>>>> number of columns.
>>>>>>> 
>>>>>>> I try to follow the documentation but don't understand why I get
>> these
>>>>>> errors.
>>>>>>> 
>>>>>>> As you can see, the text "After query" is not printed in the log.
>> Which
>>>>>> I then assume mean that something goes wrong in the store procedure.
>>>>>>> 
>>>>>>> When running the stored procedure from myPhpAdmin I get correct
>> result
>>>>>> (see attached image)
>>>>>>> 
>>>>>>> 
>>>>>>> If someone have some ideas, please share them.
>>>>>>> 
>>>>>>> Many thanks,
>>>>>>> Fredrik
>>>>>>> ------------------------------------------------------------
>>>>>>> data map contains the following:
>>>>>>>  <procedure name="readShoplistIngredientsSortedByStore"
>>>>>> catalog="foodbase">
>>>>>>>      <procedure-parameter name="id_shoplist" type="INTEGER"
>>>>>> direction="in"/>
>>>>>>>      <procedure-parameter name="id_store" type="INTEGER"
>>>>>> direction="in"/>
>>>>>>>  </procedure>
>>>>>>> 
>>>>>>> 
>>>>>>> The stored procedure looks like this:
>>>>>>> CREATE DEFINER=`foodbase_admin`@`localhost` PROCEDURE
>>>>>> `readShoplistIngredientsSortedByStore`(IN `id_shoplist` INT, IN
>> `id_store`
>>>>>> INT)
>>>>>>>  NO SQL
>>>>>>> BEGIN
>>>>>>> 
>>>>>>> CALL StoreDepartments(id_store);
>>>>>>> 
>>>>>>> SELECT departments.Name AS Department, shoppinglist_items.Amount AS
>>>>>> Amount, units.Name AS Unit, groceries.Name AS Groceries
>>>>>>> FROM shoppinglist_items
>>>>>>> JOIN groceries ON
>>>>>>> groceries.ID=shoppinglist_items.ID_groceries
>>>>>>> JOIN storedepartmentsorder ON
>>>>>>> groceries.ID_departments=storedepartmentsorder.ID_departments
>>>>>>> JOIN units ON
>>>>>>> units.ID=shoppinglist_items.ID_units
>>>>>>> JOIN departments ON
>>>>>>> departments.ID=groceries.ID_departments
>>>>>>> WHERE shoppinglist_items.ID_shoppinglists=id_shoplist
>>>>>>> ORDER BY storedepartmentsorder.deptorder, groceries.Name
>>>>>>> ;
>>>>>>> 
>>>>>>> END
>>>>>>> 
>>>>>>> 
>>>>>>> Java code:
>>>>>>> 
>>>>>>>  @SuppressWarnings("unchecked")
>>>>>>>  public String getSortedIngredients() {
>>>>>>>      try {
>>>>>>>          System.out.println("get sorted ingred....");
>>>>>>>          System.out.println("Store ID.............."+storeID);
>>>>>>> 
>>>>>>>          ProcedureQuery query = new
>>>>>> ProcedureQuery("readShoplistIngredientsSortedByStore");
>>>>>>> 
>>>>>>>          query.addParameter("id_shoplist",
>>>>>> activeShoppingList.getId());
>>>>>>>          query.addParameter("id_store", storeID);
>>>>>>> 
>>>>>>>          System.out.println("before query...");
>>>>>>> 
>>>>>>>          // run query
>>>>>>>          QueryResponse result = context.performGenericQuery(query);
>>>>>>>          System.out.println("After query");
>>>>>>> 
>>>>>>> 
>>>>>>>          for (result.reset(); result.next();) {
>>>>>>>               if (result.isList()) {
>>>>>>>                   shoppinglistItems = (List<ShoppinglistItems>)
>>>>>> result.currentList();
>>>>>>>                   // ...
>>>>>>> 
>>>>>>>               }
>>>>>>>              else {
>>>>>>>                   int[] updateCounts = result.currentUpdateCount();
>>>>>>>                   // ...
>>>>>>>               }
>>>>>>>          }
>>>>>>>      } catch (Exception e) {
>>>>>>>          System.out.println("catch exception");
>>>>>>>          e.printStackTrace();
>>>>>>>      }
>>>>>>> 
>>>>>>>      return null;
>>>>>>>  }
>>>>>>> 
>>>>>>> 
>>>>>>> Tomcat log:
>>>>>>> 
>>>>>>> get sorted ingred....
>>>>>>> Store ID..............2
>>>>>>> before query...
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logConnect
>>>>>>> INFO: Opening connection: jdbc:mariadb://127.0.0.1:3306/foodbase
>>>>>>>  Login: foodbase_admin
>>>>>>>  Password: *******
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logConnectSuccess
>>>>>>> INFO: +++ Connecting: SUCCESS.
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> log
>>>>>>> INFO: Detected and installed adapter:
>>>>>> org.apache.cayenne.dba.mysql.MySQLAdapter
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logBeginTransaction
>>>>>>> INFO: --- transaction started.
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logQuery
>>>>>>> INFO: {call readShoplistIngredientsSortedByStore(?, ?)} [bind:
>> 1:1006,
>>>>>> 2:2]
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logSelectCount
>>>>>>> INFO: === returned 18 rows. - took 2 ms.
>>>>>>> apr 14, 2016 9:43:06 EM org.apache.cayenne.log.CommonsJdbcEventLogger
>>>>>> logQueryError
>>>>>>> INFO: *** error.
>>>>>>> java.lang.NullPointerException
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.processResultSet(MySQLProcedureAction.java:101)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.dba.mysql.MySQLProcedureAction.performAction(MySQLProcedureAction.java:74)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:87)
>>>>>>>  at
>>>>>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:280)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:453)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:70)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:426)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:877)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:423)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:122)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:758)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:1009)
>>>>>>>  at
>> org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:748)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
>>>>>>>  at
>>>>>> org.apache.cayenne.access.DataContext.onQuery(DataContext.java:989)
>>>>>>>  at
>>>>>> 
>> org.apache.cayenne.access.DataContext.performGenericQuery(DataContext.java:948)
>>>>>>>  at
>>>>>> 
>> controller.PrintController.getSortedIngredients(PrintController.java:101)
>>>>>>>  at
>>>>>> controller.PrintController.setLocalObject(PrintController.java:71)
>>>>>>>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>  at
>>>>>> 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>>>>  at
>>>>>> 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>  at java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>  at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
>>>>>>>  at
>>>>>> 
>> org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
>>>>>>>  at
>>>>>> 
>> org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
>>>>>>>  at
>>>>>> 
>> org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
>>>>>>>  at
>>>>>> 
>> com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
>>>>>>>  at
>>>>>> 
>> javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
>>>>>>>  at
>>>>>> 
>> com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
>>>>>>>  at
>>>>>> javax.faces.component.UIViewAction.broadcast(UIViewAction.java:559)
>>>>>>>  at
>>>>>> javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
>>>>>>>  at
>>>>>> 
>> javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
>>>>>>>  at
>>>>>> 
>> com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
>>>>>>>  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
>>>>>>>  at
>>>>>> com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
>>>>>>>  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>>>>  at
>>>>>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>>>>>>  at
>>>>>> 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>> 
>> 
>> 

Reply via email to