我需要从自定义设置中获取对象的名称,并根据创建动态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){
它会起作用,但我的要求是使它成为通用的。