0

我正在使用 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 的方法

4

1 回答 1

1

正如评论所暗示的,将列转换为 UUID 是可行的方法。

然而,深入挖掘,我想知道 wso2dss 在这里做什么。通常列作为UNKNOWN类型​​进入,然后在适当的时候被拉入。为此varchar(), ws0dss 必须在查询执行期间指定它。所以看起来你正在做一些"uuid"::varchar()::uuid在我看来有点问题的事情。

因此,尽管您有解决方法,但我认为仅此而已。真正的问题是如何让 wso2dss 使用自定义数据类型。我希望我在那里有一个答案,但我认为它可能需要一些自定义代码。

于 2013-12-09T06:22:57.220 回答