我使用wso2 dss将数据插入到cassandra表中。 例如这个表: CREATE TABLE logs.test(id int,code int,PRIMARY KEY(id));
在wso2 dss中,我使用默认值定义了代码列,如下所示:#{NULL}
当我在没有给出代码参数的情况下尝试这样的dss服务时:
<p:test xmlns:p="http://ws.wso2.org/dataservice">
<xs:id xmlns:xs="http://ws.wso2.org/dataservice">1</xs:id>
</p:test>
我收到此错误:
<axis2ns56:source_data_service>
<axis2ns56:data_service_name>Cassandra</axis2ns56:data_service_name>
<axis2ns56:description>N/A</axis2ns56:description>
<axis2ns56:location>\Cassandra.dbs</axis2ns56:location>
<axis2ns56:default_namespace>http://ws.wso2.org/dataservice</axis2ns56:default_namespace>
</axis2ns56:source_data_service>
<axis2ns56:ds_code>UNKNOWN_ERROR</axis2ns56:ds_code>
<axis2ns56:nested_exception>java.lang.NumberFormatException: null</axis2ns56:nested_exception>
嵌套异常: - java.lang.NumberFormatException:对于输入字符串:&#34; null&#34;
祝你好运, 尼古拉斯
答案 0 :(得分:0)
所以我想你的问题就在这部分
<param defaultValue="#{NULL}" name="code" sqlType="INTEGER"/>.
我不知道你的用例,但如果我记得很清楚,在Cassandra中插入空值并不是很好,因为它会创建墓碑。 你也可以有第二个查询,只需插入像
这样的idinsert test (id) values (:id).
由dss而不是cassandra引发的execption声音,看起来它无法为整数字段设置空值
答案 1 :(得分:0)
我找到了解决方法,我使用jdbc cassandra而不是com.datatasax驱动程序。 它运作良好。唯一的问题是我只能为连接而不是集群调用一个节点。 我希望问题很快得到解决,我将再次使用Dss Cassandra数据源连接。
求助于你