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

标签 exception salesforce apex-code sql-insert soql

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

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);

我收到此消息:

FATAL ERROR System.DmlException: Insert failed. First exception on row 0; first error: INVALID_FIELD, relationships are not supported: [QUERY]

相同的查询在查询编辑器上运行良好,但是当我将其分配给推送主题时,我收到 INVALID_FIELD 异常。

如果底线是异常消息所说的内容,即推送主题对象不支持关系,那么如何创建将返回我正在查找的数据的推送主题对象?

最佳答案

为什么

Salesforce 阻止了这种情况,因为它需要它们连接表,由于 Multi-Tenancy ,Salesforce 数据库中的连接非常昂贵。通常,当他们添加新功能时,他们不会支持连接,因为它需要对该功能进行更多优化。

推送主题对于系统来说仍然是相当新的,并且需要是实时的,我认为任何会减慢它们速度的东西都需要被修剪。

我建议您更仔细地考虑您的要求,看看是否还有其他适合您的东西。

解决方法

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

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

关于exception - 为什么 Salesforce 阻止我使用包含关系的查询创建推送主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978904/

相关文章:

visual-studio-2010 - 使用 Visual Studio 2010 时出现 System.OutOfMemoryException

java - IncationTargetException 有问题

c# - 在属性中执行 while 循环会导致堆栈

java - 如何使用 apex 为 apex 调度程序创建自定义对象? (编译错误: Comparison arguments must be compatible types)

salesforce - 链接到 Apex 方法的 CSRF 安全自定义按钮

salesforce - 在 Apex Visualforce 中获取推荐人

sql - 如何在函数中抛出异常

google-bigquery - 如何在 BigQuery 中将数值转换为货币?

java - Heroku 集成

salesforce - 系统.CalloutException : For input string: "password@app.fluidsurveys.com"