You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4写入JSON到Oracle CLOB列报cannot create a clob错误咨询

问题场景

将Mule应用从3.9.5版本升级到4.4.1版本时,尝试将HTTP请求返回的JSON响应写入Oracle数据表的CLOB字段,触发如下报错:

cannot create a clob from a value of type 'class java.util.linkedhashmap'

添加DataWeave转换逻辑处理数据后仍然报相同错误,涉及的核心流程代码如下:

<http:request method="GET" config-ref="HTTP_Request_Configuration" path="${http.path}/{report_id}" doc:name="Request" doc:id="e596773f-d948-47fb-9cee-c23cf1a4dfdc" >
    <http:headers ><![CDATA[#[output application/java
---
{
    "Authorization" : "Bearer " ++ vars.accessToken,
    "Accept" : "application/json"
}]]]></http:headers>
    <http:uri-params ><![CDATA[#[output application/java
---
{
    "report_id" : vars.expenseReportID
}]]]></http:uri-params>
</http:request>
<ee:transform doc:name="Transform Message" doc:id="5d6cc3d7-0236-499a-9f93-1a2b2f331ae8">
    <ee:message>
        <ee:set-payload><![CDATA[%dw 2.0
output application/java
---
payload] ]></ee:set-payload>
    </ee:message>
</ee:transform>
<db:insert doc:name="DB_Insert" doc:id="09010c0a-7a89-4d9c-926f-eaf7ac36b9da" config-ref="Database_Config">
    <db:sql>INSERT INTO stg_clientesalesforce (id_carga, contenido_json)
VALUES (:id_carga, :contenido_json)</db:sql>
    <db:input-parameters><![CDATA[# [{"id_carga" : 12,
"contenido_json": payload}]] ]></db:input-parameters>
</db:insert>
报错根因

Mule 4的HTTP请求组件默认会将application/json类型的响应自动反序列化为Java的LinkedHashMap结构(即JSON对象对应的Java原生类型)。你配置的DataWeave转换输出格式为application/java,本质是直接将解析后的Map对象透传给数据库CLOB字段,Oracle驱动无法将Map结构直接转换为CLOB类型,因此持续抛出类型不匹配错误。

另外你贴出的代码中db:input-parameters里的Mule表达式# [存在多余空格,正确写法为#[,中间不能有空格,否则会额外触发表达式解析错误。

解决方法

核心逻辑是在传入CLOB字段前,将结构化的Map对象序列化为JSON格式的字符串,Mule数据库模块会自动将超长字符串转换为CLOB类型写入,无需手动创建CLOB对象,两种实现方式可选:

  • 方式1:修改现有Transform组件的输出配置
    将Transform组件的DataWeave逻辑替换为如下内容,直接输出序列化后的JSON字符串:
    %dw 2.0
    output application/json
    ---
    payload
    
  • 方式2:直接在数据库插入入参处做转换,无需单独保留Transform组件
    修改db:input-parameters部分的内容,使用write()函数将payload序列化为JSON字符串:
    <db:input-parameters><![CDATA[#[{
        "id_carga" : 12,
        "contenido_json": write(payload, "application/json")
    }]]]></db:input-parameters>
    

内容的提问来源于stack exchange,提问作者hpandalai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 12:00:56