[ 
https://issues.apache.org/jira/browse/CAMEL-7432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-7432.
--------------------------------

    Resolution: Fixed

> camel-mybatis - issues calling Oracle Stored procedure with multiple 
> resultsets
> -------------------------------------------------------------------------------
>
>                 Key: CAMEL-7432
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7432
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-mybatis
>    Affects Versions: 2.12.0
>            Reporter: Narayanan Harihara
>            Assignee: Claus Ibsen
>             Fix For: 2.12.4, 2.13.2, 2.14.0
>
>
> I am using camel-mybatis (version 2.12.0) component in Fuse 6.1 environment 
> to invoke an oracle SP with 2 resultsets. The request is a HashMap and once 
> mybatis maps the resultsets to java beans, the List is again saved in the 
> original HashMap itself. 
> Here is the snippet of SqlMap:
> <select
>     id="searchUsers"
>     parameterType="java.util.HashMap"       
>     statementType="CALLABLE">
>     {call ORACLE.SP_NAME_1(
>         #{userId,mode=IN,jdbcType=VARCHAR},
> #{maxResultsCount,mode=IN,jdbcType=DECIMAL},
> #{view,mode=IN,jdbcType=VARCHAR},
> #{statusInfo,mode=OUT,jdbcType=CURSOR,resultMap=statusInfoRowMap},
> #{memberInfo,mode=OUT,jdbcType=CURSOR,resultMap=claimInfoRowMap})}
> And here is how I invoke the mybatis component:
> <setBody>
>     <groovy>
> [
>     userId:'ID-1234',
>     maxResultsCount:20,
>     view:'MEMBER',
> ]
>    </groovy>
> </setBody>
> <to uri="mybatis:searchUsers?statementType=SelectOne" />
> Since there are no result object (all the results are stored in the original 
> requested HashMap itself), MyBatisProducer is setting null to exchange OUT 
> message. The original body which contains the results from stored procedure 
> is lost.
> The Question is: is this the expected behaviour? mybatis component already 
> stores the result in exchange header, so why to update the body as well?
> The workaround I had to do was - to store the original body to a header, 
> invoke mybatis and reset body from the header (which has the stored procedure 
> result now) : 
> <setBody>
>             <groovy>
>                 [
>              userId:'ID1234',
>              maxResultsCount:20,
>              view:'MEMBER'
>           ]
>         </groovy>
>     </setBody>
>     <setHeader headerName="originalRequest">
>         <simple>${body}</simple>
>     </setHeader>
>     <to uri="mybatis:searchUsers?statementType=SelectOne" />
>     <setBody>
>         <simple>${in.headers.originalRequest}</simple>
>     </setBody>
>     <log message="status: ${body.statusInfo}" />



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to