命名参数在数据服务的查询中不能多次使用
Named parameter can't be used more than one time in a query of Data Service
我们正在使用 WXSO2 EI 6.5.0。我用这样简单的查询准备了数据服务:
<sql>SELECT e.code ,e.firstName,e.lastName,e.birthday FROM dbo.elaba_USERS_EMPLOYEES e WHERE e.firstName like :someText or e.lastName like :someText </sql>
<param name="someText" paramType="SCALAR" sqlType="STRING"/>
查询产生响应
<axis2ns1092:DataServiceFault xmlns:axis2ns1092="http://ws.wso2.org/dataservice">
<axis2ns1092:current_params>{someText=Gar6va}</axis2ns1092:current_params>
<axis2ns1092:source_data_service>
<axis2ns1092:data_service_name>ElabaDataTest</axis2ns1092:data_service_name>
<axis2ns1092:description>N/A</axis2ns1092:description>
<axis2ns1092:location>/ElabaDataTest.dbs</axis2ns1092:location>
<axis2ns1092:default_namespace>http://ws.wso2.org/dataservice</axis2ns1092:default_namespace>
</axis2ns1092:source_data_service>
<axis2ns1092:ds_code>DATABASE_ERROR</axis2ns1092:ds_code>
<axis2ns1092:nested_exception>java.lang.NullPointerException</axis2ns1092:nested_exception>
<axis2ns1092:current_request_name>_get_users_employeestest</axis2ns1092:current_request_name>
</axis2ns1092:DataServiceFault>
如果我删除一个带有参数 :some Text 的条件,查询将正常工作。
此类查询在 WSO DSS 3.5.1 中运行没有问题。
经过一番调查,我在 class 中发现了一个错误
组织wso2.carbon.dataservices.core.description.query.ExpressionQuery。有一个方法 processDynamicQuery 和代码
if (tmpParam != null && !(tempParams.get(i).isOptional()) && DBConstants.DataTypes.QUERY_STRING.equals(tmpParam.getSqlType())) {
不正确。
...tempParams.get(i).isOptional()
抛出空指针异常。
如果能找到固定代码就好了
我们正在使用 WXSO2 EI 6.5.0。我用这样简单的查询准备了数据服务:
<sql>SELECT e.code ,e.firstName,e.lastName,e.birthday FROM dbo.elaba_USERS_EMPLOYEES e WHERE e.firstName like :someText or e.lastName like :someText </sql>
<param name="someText" paramType="SCALAR" sqlType="STRING"/>
查询产生响应
<axis2ns1092:DataServiceFault xmlns:axis2ns1092="http://ws.wso2.org/dataservice">
<axis2ns1092:current_params>{someText=Gar6va}</axis2ns1092:current_params>
<axis2ns1092:source_data_service>
<axis2ns1092:data_service_name>ElabaDataTest</axis2ns1092:data_service_name>
<axis2ns1092:description>N/A</axis2ns1092:description>
<axis2ns1092:location>/ElabaDataTest.dbs</axis2ns1092:location>
<axis2ns1092:default_namespace>http://ws.wso2.org/dataservice</axis2ns1092:default_namespace>
</axis2ns1092:source_data_service>
<axis2ns1092:ds_code>DATABASE_ERROR</axis2ns1092:ds_code>
<axis2ns1092:nested_exception>java.lang.NullPointerException</axis2ns1092:nested_exception>
<axis2ns1092:current_request_name>_get_users_employeestest</axis2ns1092:current_request_name>
</axis2ns1092:DataServiceFault>
如果我删除一个带有参数 :some Text 的条件,查询将正常工作。 此类查询在 WSO DSS 3.5.1 中运行没有问题。
经过一番调查,我在 class 中发现了一个错误 组织wso2.carbon.dataservices.core.description.query.ExpressionQuery。有一个方法 processDynamicQuery 和代码
if (tmpParam != null && !(tempParams.get(i).isOptional()) && DBConstants.DataTypes.QUERY_STRING.equals(tmpParam.getSqlType())) {
不正确。
...tempParams.get(i).isOptional()
抛出空指针异常。
如果能找到固定代码就好了