Nel linguaggio di programmazione Apex di Salesforce, le Liste possono conservare valori duplicati ma, se contengono sObject IDs duplicati e si prova ad effettuare un update o una delete, si otterrà l'errore: "System.ListException: Duplicate id in list".
E' possibile risolvere tale problema in modo semplice:
- Creare una mappa di <id,sobject>
- Convertire la lista in mappa così da rimuovere gli IDs duplicati.
- Effettuare l'Update o la Delete dei valori contenuti nella mappa.
Esempio:
// pick up any id from your salesforce org, in this sample it is account id.
Id aid = '0017F000002WkkdQAC';
List<Account> al = new List<Account>();
for(account a : [select id from account where id ='0017F000002WkkdQAC']){
Account acc = new Account(id = aid);
al.add(a);
al.add(acc);
}
//create a map that will hold the values of the list
Map<id,account> accmap = new Map<id,account>();
//put all the values from the list to map.
accmap.putall(al);
if(accmap.size()>0){
update accmap.values();
}