0

我们使用的是 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 中运行没有问题。

4

1 回答 1

0

经过一番调查,我在 org.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()

抛出空指针异常。

找到固定代码会非常好。

于 2019-08-21T05:10:47.397 回答