java - Camel Salesforce 组件 REST API salesforce:查询无法检索记录
问题描述
我想通过使用 Camel Salesforce 组件 salesforce:query API 执行 SOQL,以使用 AccountId 检索 SObject 联系人。但它只返回一个所有字段为空的 DTO 联系人。我用 Camel Salesforce 组件源代码进行了调试,我发现它得到了代码 200 的响应。
顺便说一句,有谁知道如何实现动态 SOQL,我发现我不能在其中使用 ${body},比如“sObjectQuery=SELECT LastName FROM Contact WHERE AccountID='${body}'”
- 这是一个简单的maven项目
- DTO:联系人、帐户已由 camel-salesforce-maven-plugin 生成
- 其他 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)
解决方案
实际上查询返回“done”、“totalSize”、“records”作为响应。无论您向salesforce 查询查询的内容都在记录中。要查看此内容,您必须在您的类中添加以下行及其getter 和setter。
private List <yourClassName> records;
然后将对象列表映射到适当的类。
更多详情:https ://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm
推荐阅读
- java - Java中使用DAO模式的多对多关系
- r - 如果输入通过,updateTabItems 在模块中不起作用
- c# - 在 chrome C# 中更改下载的文件名
- c# - 使用 Grid 在多列上显示项目
- animation - 有没有办法阻止耀斑动画循环播放?
- ruby-on-rails - 对话迁移 Ruby on Rails
- twilio - Twilio,如何桥接2个本地号码并挂断twilio号码
- python - 从 Python 数据框中的文本列中的特定单词创建虚拟变量和分类变量
- python - Matplotlib 中公共 x 轴上的多个绘图,带有公共 y 轴标签
- python - 根据 pandas 中的先前值交替更改列值