大家早上好。

我在JDBC ORACLE数据库查询中使用MEL表达式时遇到问题。

特别是,Mule流接受一个通过Datamapper在Map中转换的Excel文件,并且其字段用于以这种形式在数据库中进行查询:

<jdbc-ee:query key="Fill Table" value="INSERT INTO BUFF_SBIL_ZONALE (DATA_ORA,MACRO_ZONA,SEGNO_SBIL,PRZ_MSD_VEN,PRZ_MSD_ACQ,ID_BIS,FILE_NAME,DATA_LOAD)
VALUES (TO_DATE(#[map-payload:DATA_ORA], 'DD/MM/YYYY  hh:mi:ss'),#[map-payload:MACROZONA],#[map-payload:SEGNO],#[map-payload:P_medioMSD_VEN],#[map-payload:P_medioMSD_ACQ],#[message.inboundProperties['correlationId']],#[message.InvocationProperty['originalFilename']],SYSDATE)"/>


该查询似乎是正确的,但是当我执行该应用程序时,我收到一个异常,通知我#[map-payload:P_medioMSD_VEN]为NULL(正确,因为在Excel文件中它不存在),并且MEL表达式无法读取NULL。值。
因此,问题不是SQL问题,而是不接受NULL数据库字段值的MEL问题。

有人知道如何绕过MEL异常以接受可修改的值吗?

在此先感谢大家

抛出的异常是:* org.mule.api.expression.RequiredValueException:表达式评估器“ bean”的表达式为“ xy”返回null,但需要一个值。 *

最佳答案

我找到了解决方案。
我在这里只为有同样问题的某人写东西。

如果要使MEL表达式值可选(即NULL值是正确的值),则应写一个“?”在MEL表达式的末尾。

#[map-payload:P_medioMSD_ACQ?]


放一个“?”该值是可选的,并且接受NULL值

关于java - Mule ESB MEL表达式返回NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19633814/

10-11 00:57