0

Ich muss nur Werte von einer Karte ', die Datensatz von übergeordneten Kind verschachtelte Abfrage' auf eine andere Karte speichern.Speichern einer Karte Werte zu einer anderen

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. 

Antwort

0

Dies liegt daran, ordd.Itens_do_pedido__rList<BR_OrderItem__c> ist. Es gibt 2 Möglichkeiten, das Problem zu lösen.

1.Define die Karte als List<BR_OrderItem__c>:

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

2. Wenn Sie wissen, dass Sie nur 1 Kind Punkt gegen jeden Elternteil haben, dann können Sie mit der folgenden Option gehen:

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

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