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 を使用してデータベースに送信する方法はありますか? UUID 型がないため、DSS クエリパラメーターで使用できるデータ型DSS を介して UUID を送信する方法

4

1 に答える 1

1

コメントが示唆するように、列を UUID にキャストする方法です。

しかし、さらに掘り下げてみると、wso2dss はここで何をしているのでしょうか。通常、列はUNKNOWN型として取り込まれ、適切に取り込まれます。これが として入るにはvarchar()、クエリの実行中に ws0dss がそれを指定している必要があります。それで、あなたは"uuid"::varchar()::uuid私には少し問題があるように思われるようなことをしているようです。

回避策がありますが、これですべてだと思います。本当の問題は、wso2dss をカスタム データ型で動作させるにはどうすればよいかということです。そこに答えがあればいいのですが、カスタムコードが必要になるかもしれません。

于 2013-12-09T06:22:57.220 に答える