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