为什么Salesforce阻止我使用包含关系的查询创建推送主题?

J S*_*ith 2 exception salesforce soql apex-code sql-insert

当我在开发者控制台中执行此代码时

PushTopic pushTopic = new PushTopic();
pushTopic.ApiVersion = 23.0;
pushTopic.Name = 'Test';
pushTopic.Description = 'test';
pushtopic.Query = 'SELECT Id, Account.Name FROM Case';
insert pushTopic;
System.debug('Created new PushTopic: '+ pushTopic.Id);
Run Code Online (Sandbox Code Playgroud)

我收到此消息:

致命错误System.DmlException:插入失败.第0行的第一个例外; 第一个错误:INVALID_FIELD,不支持关系:[QUERY]

相同的查询在查询编辑器上运行正常,但是当我将其分配给推送主题时,我得到了INVALID_FIELD异常.

如果底线是异常消息所说的内容,Push Topic对象不支持这种关系,那么如何创建一个Push Topic对象来返回我正在寻找的数据?

the*_*ogz 5

为什么

Salesforce阻止了这一点,因为它需要它们连接表,由于多租户,salesforces数据库中的连接很昂贵.通常,当他们添加新功能时,他们将不支持联接,因为它需要更多优化功能.

推送主题对于系统来说仍然是一个新手,需要是实时的,任何会减慢它们的东西我都说需要削减.

我建议你仔细看看你的要求,看看是否有其他适合你的东西.

解决方法

一个潜在的解决方法是使用您需要的数据向Case对象添加一个公式字段,并将其包含在查询中.这可能不起作用,因为它仍然需要联接才能工作.

最后一个选项可能是使用工作流规则或触发器将帐户名更新为Case对象上的自定义字段,这样数据就是本地的,因此不需要连接...