Salesforce apex触发列表中的重复ID

Lee*_*ang 2 triggers list salesforce duplicates

在我的订单插入触发器,我需要更新订单信息的联系人,我知道我的联系人列表中有重复的记录.所以我使用Contact [] contactToUpdate = new List(new Set(contactList)); 删除重复项.

但我仍然收到错误消息:列表中的重复.

任何的想法??

谢谢

Mat*_*cey 5

你是正确的,一个集合包含唯一的元素,但问题是你正在处理联系实例:只是因为两个实例在数据库中引用相同的联系人,它们仍然是内存中的不同对象实例,因此是唯一的,结果是你可以拥有代表具有相同id的相同联系人的集合中的条目.

最简单的方法是使用id联系地图:

map<Id, Contact> contactMap = new map<id, Contact>();
Run Code Online (Sandbox Code Playgroud)

对于您处理的每个订单,您可以使用联系人查找作为地图的关键字来联系您要更新的联系人.在处理结束时,您可以通过调用以下方式更新联系人:

update mapContacts.values(); 
Run Code Online (Sandbox Code Playgroud)

  • 它在代码中从未被识别为"记录",它始终是表示数据库对象的类的实例.如果您确实从数据库中选择了一个联系人,将其存储在变量c中,然后将c添加到该设置两次,那么它只会出现一次,因为它是一个实例.在两个变量中查询两次会创建两个不同的实例,这两个实例都可以添加. (2认同)