Mule ESB MEL表达式返回NULL

时间:2013-10-28 11:37:47

标签: java sql mule mule-el

大家早上好。

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

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

<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问题,而是MEL问题,它不接受NULL数据库字段值。

是否有人知道如何绕过MEL Exception以接受可以为空的值?

提前感谢所有人

引发的异常是:* org.mule.api.expression.RequiredValueException:表达式为“xy”的表达式Evaluator“bean”返回null但需要一个值。 *

2 个答案:

答案 0 :(得分:3)

我找到了解决方案。 我在这里写的只是为了一些有同样问题的人。

如果你想让MEL表达式值可选(即NULL值是正确的值),你应该写一个'?'在MEL表达式结束时。

#[map-payload:P_medioMSD_ACQ?]

放一个'?'值是可选的,接受NULL值

答案 1 :(得分:0)

在将它们传递给MEL之前,请检查字段是否为NOT NULL。如果您知道某些字段始终为NULL,请不要在插入查询中指定它,它将在db中获得默认值NULL