我正在使用wso2dss3.0.1并使用POSTGRESSQL数据库,因此我的数据库中有表格,如
uuid table
========================
column name | datatype
----------------------------------
uuid | uuid
deviceid | bigint
objectid | bigint
message | string
所以我希望使用wso2dss插入数据但是它无法插入并且它给出了这样的错误
</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail>
<axis2ns1:DataServiceFault xmlns:axis2ns1="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: taction_DataService
Location: /taction_DataService.dbs
Description: N/A
Default Namespace: http://ws.wso2.org/dataservice
Current Request Name: insertinto_seenuuid_op
Current Params: {uuid=a0eebc999c0b4ef8bb6d6bb9bd380a11, objectid=-1, deviceid=-1}
Nested Exception:-
org.postgresql.util.PSQLException: ERROR: column "uuid" is of type uuid but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 53
</axis2ns1:DataServiceFault>
</soapenv:Detail>
</soapenv:Fault>
现在我的问题是我的数据库列类型是修复我无法改变它如何使用wso2dss将其发送到数据库如果它可能在DSS查询参数中可以使用哪种类型的数据类型,因为没有UUID类型 是通过DSS发送UUID的任何方式
答案 0 :(得分:1)
正如评论所示,将列转换为UUID是可行的方法。
然而,深入挖掘,我想知道wso2dss在这里做了什么。通常,列以UNKNOWN
类型的形式出现,然后根据需要拉入。为了以varchar()
的形式出现,ws0dss必须在查询执行期间指定它。所以看起来你正在做类似"uuid"::varchar()::uuid
的事情,这在我看来有点像问题。
所以当你有一个解决方法时,我认为就是这样。真正的问题是如何让wso2dss使用自定义数据类型。我希望我有一个答案,但我认为它可能需要一些自定义代码。