我们正在尝试使用 where 语句中的 ArrayList 来查询 Salesforce。
下面是我们在 where 子句中尝试使用 ArrayList 时遇到的错误。
我们针对 Salesforce 使用的查询:
Select Id,Billing_Number__c from Call_Log__c where Id in #[flowVars.successlist]
successlist
包含值 ['a1o90000001msXwAAI', 'a1o90000001msXxAAI']
。
错误消息:
Message: Failed to invoke query. Message payload is of type: ArrayList
如何解决此错误?
最佳答案
遗憾的是,您无法使用 ArrayList 作为 Salesforce(或数据库)查询中的参数。您必须使用脚本组件动态创建查询。
试试这个:
<scripting:script engine="Groovy">
<![CDATA[def sb = new StringBuilder()
sb.append('Select Id,Billing_Number__c from Call_Log__c')
if (flowVars.successlist != null && !flowVars.successlist.empty) {
sb.append(' where Id in (\'')
for (i in 0 .. flowVars.size()) {
if (i > 0) sb.append('\',\'')
sb.append(flowVars.successlist[i])
}
sb.append('\')')
}
flowVars.query = sb.toString()]]>
</scripting:script>
<sfdc:query query="#[flowVars.query]" doc:name="Salesforce - Query"/>
如果您使用数据库,则必须将查询类型设置为动态:
<db:select doc:name="Database">
<db:dynamic-query><![CDATA[#[flowVars.query]]]></db:dynamic-query>
</db:select>
关于java - 在Mule中使用Arraylist查询Salesforce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930058/