0

Мне просто нужно сохранить значения из одной карты, которая имеет запись из родительского дочернего вложенного запроса, на другую карту.Сохранение значений одной карты для другой

Please see the below code that i am trying: 



Map<id,BR_OrderItem__c> FinalorderitemMap = new Map<id,BR_OrderItem__c>(); 

     Map<id,order> ordermap = new Map<id,order>([select Id,Name,Account.Name 
    (select Id, name from Itens_do_pedido__r),BR_TotalConvertedQuantity__c from Order where id in :TargetIDList ]); 


       for(order ordd : ordermap.values()){ 
        FinalorderitemMap.put(ordd.id,ordd.Itens_do_pedido__r); 

       } 


Error that i am getting here: 

|System.QueryException: List has more than 1 row for assignment to SObject 

Please suggest Exactly what i am doing wrong here. 

All i want is to store realted child(order-item) record with corresponding  order as key. 




Please suggest, Thanks in Advance. 

ответ

0

Это потому, что ordd.Itens_do_pedido__r является List<BR_OrderItem__c>. Есть два способа решить проблему.

1.Define карте как List<BR_OrderItem__c>:

Map<Id, List<BR_OrderItem__c>> FinalorderitemMap = new Map<Id, List<BR_OrderItem__c>>(); 

2.Если вы знаете, что вы будете иметь только пункт 1 ребенок от каждого из родителей, то вы можете пойти со следующей опцией:

for (order ordd : ordermap.values()) { 
    if (ordd.Itens_do_pedido__r.isEmpty()) { 
    continue; 
    } 

    FinalorderitemMap.put(ordd.id, ordd.Itens_do_pedido__r[0]); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^