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__rList<BR_OrderItem__c> 때문입니다. 문제를 해결하는 두 가지 방법이 있습니다. List<BR_OrderItem__c>

1.Define지도 :

당신은 당신이 다음과 같은 옵션을 갈 수있는, 각 부모에 대해 1 개 하위 항목이있을 것이라는 점을 알고 2.If
Map<Id, List<BR_OrderItem__c>> FinalorderitemMap = new Map<Id, List<BR_OrderItem__c>>(); 

:

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

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