大家早上好。
我在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/