簡體   English   中英

在 Mule 中使用 Arraylist 查詢 Salesforce

[英]Using Arraylist in Mule to query Salesforce

我們試圖在 where 語句中使用 ArrayList 查詢 Salesforce。

下面是我們在 where 子句中嘗試使用 ArrayList 時遇到的錯誤。

我們針對 Salesforce 使用的查詢:

Select Id,Billing_Number__c from Call_Log__c where Id in #[flowVars.successlist] 

successlist包含值['a1o90000001msXwAAI', 'a1o90000001msXxAAI']

錯誤信息:

消息:無法調用查詢。 消息負載的類型:ArrayList

如何解決此錯誤?

不幸的是,您不能在 Salesforce(或數據庫)查詢中使用ArrayList作為參數。 您必須使用腳本組件動態創建查詢。

嘗試這個:

        <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 函數 string.join 來轉換列表,如下所示:

SELECT id  FROM User where Id  in   (#["'" + String.join("','", flowVars.fvCreatedbyIdList) + "'"])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM