java - Camel Salesforce 组件 REST API salesforce :query cannot retrieve records

标签 java apache-camel salesforce

我想使用 Camel Salesforce 组件 salesforce:query API 执行 SOQL,以使用 AccountId 检索 SObject 联系人。但它只返回一个所有字段均为空的 DTO 联系人。我用Camel Salesforce组件源代码进行了调试,发现它得到了代码为200的响应。

顺便说一句,有谁知道如何实现动态 SOQL,我发现我无法在其中使用 ${body},例如“sObjectQuery=SELECT LastName FROM Contact WHERE AccountID='${body}'”

  1. 这是一个简单的maven项目
  2. DTO:联系人、帐户已由camel-salesforce-maven-plugin生成
  3. 其他 Camel Salesforce 组件 REST API:salesforce:upsertSObject、salesforce:getSObjectWithId、salesforce:deleteSObjectWithId 和 salesforce:createSObject 可以运行并返回正确的结果

路线:

from("direct:query")
    .to("salesforce:query?sObjectQuery=SELECT LastName FROM Contact&sObjectClass="+ Contact.class.getName())
    .process(exchange -> {
        Object body = exchange.getIn().getBody();
        System.out.println(body.getClass());
        System.out.println(body);
 });
ProducerTemplate template = camelCtx.createProducerTemplate();
Object obj = template.requestBody("direct:query", null, Object.class);

实际结果: com.salesforce.test.Contact 类 {"Reporting_States__c":null,"Specialty__c":null}

预期结果: 返回一个 QueryRecordsContact 对象,其中包含联系人列表的字段。 (QueryRecordsContact是由Camel Salesforce maven插件生成的DTO)

最佳答案

尝试像这样重写你的路线:

    from("direct:query")
        .setHeader("sObjectQuery", simple("SELECT LastName FROM Contact WHERE id='${body}'"))
        .to("salesforce:query?sObjectQuery=&sObjectClass=" + QueryRecordsContact.class.getName())
        .process(exchange -> {
            Object body = exchange.getIn().getBody();
            System.out.println(body.getClass());
            System.out.println(body);
        });
  • 您可以将您感兴趣的查询放在 sObjectQuery header 上,并在那里动态构建它
  • SF 查询返回一个包含记录列表的 json,因此您应该将 QueryRecordsContact 传递到端点以便进行正确的映射

关于java - Camel Salesforce 组件 REST API salesforce :query cannot retrieve records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56558632/

相关文章:

java - 如何编辑/加载 Eclipse 插件

java - RabbitMQ 从 C# 解析 "client_properties" header

http - Camel http端点动态形成url

java - Salesforce 现场代理状态

php - 从 Salesforce 复制数据 - PHP 工具包和 curl

iphone - 如何在ios中访问Salesforce附件正文(base64二进制数据)?

java - LibGDX 检测鼠标点击网格三角形

java - 为什么扩展 WebSecurityConfigurerAdapter 且未声明任何 bean 的类要使用配置进行注释?

ftp - Apache Camel FTP - 如何手动启动路由

java - Camel捕获在karaf上运行的jdbc异常ClassNotFound