【问题标题】:Salesforce apex trigger duplicate id in listSalesforce apex 触发列表中的重复 ID
【发布时间】:2012-05-29 01:05:38
【问题描述】:

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

但我仍然收到错误消息:List 中重复。

有什么想法吗??

谢谢

【问题讨论】:

标签: list triggers duplicates salesforce


【解决方案1】:

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

解决这个问题的最简单方法是使用 id 映射来联系:

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

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

update mapContacts.values(); 

【讨论】:

  • 非常感谢,但我还有一个问题:那么记录何时被识别为实例,何时被识别为记录?
  • 它在代码中永远不会被识别为“记录”,它始终是代表数据库对象的类的实例。如果您确实从数据库中选择了一个联系人,将其存储在变量 c 中,然后将 c 添加到集合中两次,它只会出现一次,因为它是一个实例。对两个变量进行两次查询会创建两个可以同时添加的不同实例。
  • 有没有人告诉过你你很了不起?非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多