0

我只需要将One Map中的值存储到另一个Map中,该地图中有来自父子嵌套查询的记录。将一个Map值存储到另一个

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__rList<BR_OrderItem__c>。有两种方法可以解决这个问题。

1.定义地图为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]); 
} 
相关问题