2012-05-29 44 views
2

在我的訂單插入觸發器中,我需要更新訂單信息的聯繫人,我知道在我的聯繫人列表中存在重複記錄。所以我用 聯繫人[] contactToUpdate = new List(new Set(contactList)); 刪除重複項。Salesforce apex觸發列表中的重複ID

但我仍然收到錯誤消息:在列表中重複。

任何想法?

感謝

+0

喜利,共創美好的地方,告訴你關於這個的想,我們有我們的第一個墨爾本的開發小組聚會周後年 - http://www.meetup.com/Melbourne-Salesforce-Platform-Developer-Users-Group/ –

+0

嗨馬特,非常感謝你組織這樣的活動!我一定會在那裏見到你。乾杯 –

回答

5

你是正確的,一組包含獨特的元素,但問題是,你正在處理的聯繫的實例:僅僅是因爲兩個實例均指在DB相同的接觸,他們仍然是不同的對象內存中的實例,因此是唯一的,結果是您可以在代表具有相同ID的相同聯繫人的集合中輸入內容。

解決這個問題的最簡單的方法是使用地圖ID的聯繫:

map<Id, Contact> contactMap = new map<id, Contact>(); 

對於每次處理訂單,您可以使用聯繫人查找的關鍵地圖到達與您聯繫想要更新。在您處理結束時,你就可以簡單地通過調用更新聯繫人:

update mapContacts.values(); 
+0

非常感謝,但我還有另一個問題:所以當記錄被確認爲一個實例和記錄時? –

+2

它在代碼中永遠不會被認爲是「記錄」,它始終是一個表示數據庫對象的類的實例。如果您從數據庫中選擇了聯繫人,將其存儲在變量c中,然後將c添加到該集合中,那麼它只會出現一次,因爲它是一個實例。 向兩個變量查詢兩次會創建兩個可以添加的不同實例。 –

+0

有沒有人告訴你,你太棒了?非常感謝。 –

相關問題