将一个Map值存储到另一个

时间:2016-07-03 10:17:50

标签: salesforce apex-code apex salesforce-chatter salesforce-communities

我只需要将来自One 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.

1 个答案:

答案 0 :(得分: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]);
}