2013-07-31 30 views
2

當我在開發者控制檯執行該代碼爲什麼Salesforce阻止我使用包含關係的查詢創建推送主題?

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異常。

如果底線是異常消息所說的內容,那麼這些關係僅僅是Push主題對象不支持的,我如何創建一個Push主題對象來返回我正在查找的數據?

回答

5

爲什麼

Salesforce的防止這一點,因爲它會要求他們加入表,聯接在銷售隊伍的數據庫是昂貴的,由於多租戶。通常,當他們添加新功能時,他們不會支持連接,因爲它需要對功能進行更多優化。

推送主題對於系統來說還是相當新穎的,而且需要實時,任何會減慢它們速度的東西我會說需要修剪。

我建議你仔細看看你的要求,看看有沒有別的東西能適合你。

解決方法

一個潛在的解決方法是一個公式字段添加到案例的對象與你需要的,包括在查詢,而不是數據。這可能不起作用,因爲它仍然需要加入工作。

最後一個選擇可能是使用工作流規則或觸發這樣的數據是本地帳戶名更新到自定義字段案對象所以不需要加入...

0

PushTopics支持SOQL查詢的一個很小的子集,多看看這裏: https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/unsupported_soql_statements.htm

但是這應該工作:

PushTopic casePushTopic = new PushTopic(); 
pushTopic.ApiVersion = 23.0; 
pushTopic.Name = 'CaseTopic'; 
pushTopic.Description = 'test'; 
pushtopic.Query = 'SELECT Id, Account.Id FROM Case'; 
insert pushTopic; 

PushTopic accountPushTopic = new PushTopic(); 
pushTopic.ApiVersion = 23.0; 
pushTopic.Name = 'AccountTopic'; 
pushTopic.Description = 'test'; 
pushtopic.Query = 'SELECT Id, Name FROM Account'; 
insert pushTopic; 

這真的取決於你的使用情況,雖然,如果是複製到RDBMS這應該就足夠了,您可以使用連接來獲取完整的數據。

相關問題