如何从动态Sooql查询结果集中检索子对象数据?

时间:2016-02-07 07:17:54

标签: salesforce apex-code apex salesforce-service-cloud salesforce-chatter

我需要从自定义设置中获取对象的名称,并根据创建动态Sooql所需的名称来获取子对象id,以便与特定用户共享。

请参阅以下部分我正在尝试实现此目的的触发器代码。

SubQ =',(select id from ' + CustomMap.get(objName).API_Field__c + ')'; 
String queryStr=' select id '+ SubQuery + ' from Account where id in:accId';

List<Account> objdata =Database.query(queryStr);

for(String objName : CustomMap.keyset()) {

// Here custom map contains object name as key.
// objdata is the Account List created from sooql.

     for(Account ac : objdata){
       for(objName obj : ac.objName ){

      if(recordIdsMap.containsKey('ObjName')){
          List<String> recordIds = recordIdsMap.get('ObjName');
            recordIds.add(obj.Id);
            system.debug('recordIds' + recordIds);
           recordIdsMap.put('ObjName',recordIds);
           }
            else{
             system.debug('Recordid'  + obj.id);

            recordIdsMap.put('ObjName', new List<String> {obj.id});

}

但它在这里给出了类型转换错误:

for(objName obj : ac.objName ){

因为objname是字符串而不是对象,即使我尝试将其转换为sobject它也不会起作用,因为soject id最高的对象并且无法通过帐户调用它。

如果我像这样硬编码对象:

 for(cases obj : ac.cases){

它会起作用,但我的要求是使它成为通用的。

0 个答案:

没有答案