Question

I have been trying to get a parameterized CQL query working in WSO2 DSS. Unfortunately I have been unsuccessful. Appreciate your help soon as I'm stuck in an urgent matter.

Following is the DBS file contents

<data name="CassParamTest">
   <config id="CassDs">
      <property name="org.wso2.ws.dataservice.protocol">jdbc:cassandra://localhost:9161/oneDataAux</property>
      <property name="org.wso2.ws.dataservice.driver">org.apache.cassandra.cql.jdbc.CassandraDriver</property>
   </config>
   <query id="getEmps" useConfig="CassDs">
      <sql>select employeeNumber from EMPLOYEES where employeeNumber = :employeeNumber</sql>
      <param name="employeeNumber" sqlType="STRING" />
   </query>
   <operation name="getEmps">
      <call-query href="getEmps">
         <with-param name="employeeNumber" query-param="employeeNumber" />
      </call-query>
   </operation>
</data>

Actually the parameter employeeNumber is a Number. But I kept getting errors. So I tried with String too with no avail. I also tried ? instead of named parameter

Here are the errors I got.

When the parameter is a String,

<soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:axis2ns12="http://ws.wso2.org/dataservice">
   <soapenv:Code>
      <soapenv:Value>axis2ns12:DATABASE_ERROR</soapenv:Value>
   </soapenv:Code>
   <soapenv:Reason>
      <soapenv:Text xml:lang="en-US" xmlns:xml="http://www.w3.org/XML/1998/namespace">DS Fault Message: Error in DS non result invoke.
DS Code: DATABASE_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: CassParamTest
Location: /CassParamTest.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: getEmps
Current Params: {employeeNumber=1002}
Nested Exception:-
java.sql.SQLNonTransientException: No Update Count was returned from the CQL statement passed in an 'executeUpdate()' method

</soapenv:Text>
   </soapenv:Reason>
   <soapenv:Detail>
      <axis2ns11:DataServiceFault xmlns:axis2ns11="http://ws.wso2.org/dataservice">DS Fault Message: Error in DS non result invoke.
DS Code: DATABASE_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: CassParamTest
Location: /CassParamTest.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: getEmps
Current Params: {employeeNumber=1002}
Nested Exception:-
java.sql.SQLNonTransientException: No Update Count was returned from the CQL statement passed in an 'executeUpdate()' method

</axis2ns11:DataServiceFault>
   </soapenv:Detail>
</soapenv:Fault>

When the parameter is a number,

DS Code: DATABASE_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: CassParamTest
Location: /CassParamTest.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: getEmps
Current Params: {employeeNumber=1002}
Nested Exception:-
java.sql.SQLException: Mismatched types: java.math.BigInteger cannot be cast to java.lang.String

THANK YOU FOR YOUR TIME AND YOUR KIND HELP

Was it helpful?

Solution

I found the solution. I missed to have an Output mapping. Seems if an output mapping is not there, DSS takes the command as an update command (see http://docs.wso2.org/wiki/display/DSS301/Cassandra)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top