You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过force-partner-api-55.2.jar获取Salesforce变更数据捕获选中实体

获取Salesforce变更数据捕获已选中实体的正确方法

你当前用describeGlobal()的方式只能拿到所有支持变更数据捕获的实体(因为AssociateEntityType为ChangeEvent的都是支持该功能的实体),但无法区分是否已在设置中启用。要获取已选中的实体,有两种可靠方式:

方法一:通过SOQL查询ChangeEventSubscription对象

ChangeEventSubscription对象存储了所有已启用变更数据捕获的实体配置,直接查询它就能得到目标列表:

String soql = "SELECT EntityDefinition.QualifiedApiName FROM ChangeEventSubscription";
QueryResult result = getPartnerConnection().query(soql);
List<SObjectCache> selectedEntities = new ArrayList<>();
for (SObject sObj : result.getRecords()) {
    String entityName = (String) sObj.getField("EntityDefinition.QualifiedApiName");
    // 此处可将entityName转换为你需要的SObjectCache对象
    selectedEntities.add(new SObjectCache(entityName));
}

方法二:通过SOQL查询EntityDefinition对象

EntityDefinition是元数据对象,其中IsChangeDataCaptureEnabled字段标记了实体是否已启用变更数据捕获:

String soql = "SELECT QualifiedApiName FROM EntityDefinition WHERE IsChangeDataCaptureEnabled = true";
QueryResult result = getPartnerConnection().query(soql);
List<SObjectCache> selectedEntities = new ArrayList<>();
for (SObject sObj : result.getRecords()) {
    String entityName = (String) sObj.getField("QualifiedApiName");
    selectedEntities.add(new SObjectCache(entityName));
}

注意事项

  • 确保你的API用户拥有View All Data权限,或者至少有访问ChangeEventSubscription/EntityDefinition对象的权限,否则查询会返回空结果或权限错误。
  • 两种方法返回的核心结果一致,可按需选择:若需要变更数据捕获的额外配置细节(如订阅渠道),优先使用ChangeEventSubscription查询。

内容的提问来源于stack exchange,提问作者NoName

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:55:00