当wso2 dss服务器中的一个输出字段为空时,无法检索记录的详细信息

当wso2 dss服务器中的一个输出字段为空时,无法检索记录的详细信息,wso2,wso2carbon,wso2dss,dss,Wso2,Wso2carbon,Wso2dss,Dss,我正在开发简单的dss服务,在该服务中,我根据一些输入参数检索客户详细信息 在输出中,我显示客户id、名字、姓氏、手机号码、电子邮件和客户状态 现在,如果上述6个输出字段中的任何一个在数据库条目中为空(即,如果客户的移动电话号码未在DB中输入),并且如果我尝试通过dss检索该客户详细信息,则我不会在输出中获取客户详细信息 仅当数据库中上述6个输出字段中有值时,才会检索该客户的详细信息 我尝试将输出字段设置为可选字段,但没有帮助。还尝试为outpu字段提供默认值,但也没有帮助 以下是我的数据服务

我正在开发简单的dss服务,在该服务中,我根据一些输入参数检索客户详细信息

在输出中,我显示客户id、名字、姓氏、手机号码、电子邮件和客户状态

现在,如果上述6个输出字段中的任何一个在数据库条目中为空(即,如果客户的移动电话号码未在DB中输入),并且如果我尝试通过dss检索该客户详细信息,则我不会在输出中获取客户详细信息

仅当数据库中上述6个输出字段中有值时,才会检索该客户的详细信息

我尝试将输出字段设置为可选字段,但没有帮助。还尝试为outpu字段提供默认值,但也没有帮助

以下是我的数据服务

<data name="CustomerStatusManagementDssdirectconsole">
   <config id="ildb">
      <property name="carbon_datasource_name">il_database</property>
   </config>
   <query id="select_customer_details_by_any_parameter" useConfig="ildb">
      <sql>select * from ildb_schema.customer_detail where identifier like :cust_id and first_name like :firstname and last_name like :lastname and mobile_number like :mobilenumber and email like :email</sql>
      <result element="Customers" rowName="customer">
         <element column="identifier" name="cid" xsdType="xs:string"/>
         <element column="first_name" name="first_name" xsdType="xs:string"/>
         <element column="last_name" name="last_name" xsdType="xs:string"/>
         <element column="mobile_number" name="mobile_number" xsdType="xs:string"/>
         <element column="user_status" name="user_status" xsdType="xs:string"/>
         <element column="email" name="email" xsdType="xs:string"/>
      </result>
      <param name="cust_id" sqlType="STRING"/>
      <param name="firstname" sqlType="STRING"/>
      <param name="lastname" sqlType="STRING"/>
      <param name="mobilenumber" sqlType="STRING"/>
      <param name="email" sqlType="STRING"/>
   </query>
    <operation name="select_customer_details_by_any_parameter_operation">
      <call-query href="select_customer_details_by_any_parameter">
         <with-param name="cust_id" query-param="identifier"/>
         <with-param name="firstname" query-param="first_name"/>
         <with-param name="lastname" query-param="last_name"/>
         <with-param name="mobilenumber" query-param="mobile_number"/>
         <with-param name="email" query-param="email"/>
      </call-query>
   </operation>
   </data>

il_数据库
从ildb_schema.customer_detail中选择*,其中标识符如:cust_id和first_name如:firstname和last_name如:lastname和mobile_number如:mobilenumber和email如:email

例如,如果有客户id=110,名字=abc,姓氏=xyz,电子邮件=abc@some.com,mobile=,status=活动
如果我通过dss在try the service(尝试服务)选项中检索上述客户,我将获得以下输出,而不包含客户的详细信息

<Customers xmlns="http://ws.wso2.org/dataservice"/>

您编写的查询要求所有参数都存在。也许它可以被命名为“按每个参数选择客户详细信息”,而不是“按任何参数选择客户详细信息”。)

在WSO2 DDS中,可以为每个数据源定义多个数据服务查询,每个查询具有不同的参数。看起来您只有一个查询,以及一个接受每个参数的操作。我建议为您的数据源编写多个数据服务查询,包括在where子句中只包含主键字段的查询。这应该允许您检索具有其他空列的行

干杯, 科林

<Customers xmlns="http://ws.wso2.org/dataservice"/>