2012-05-29 43 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

有没有人告诉你,你太棒了?非常感谢。 –

相关问题