"How I can get the sObject Type from Record Id?". In many requirements I do have 15-digit or 18-digit Id and I want to know the sObject to which the Id belongs to. Answer is using Global Describe we can get the sObject type.
Am getting too many emails from folks from Community Forums regarding this, so here is the generic method which will help all.
Am getting too many emails from folks from Community Forums regarding this, so here is the generic method which will help all.
public class KeyPrefix
{
// map to hold global describe data
private static Map<String,Schema.SObjectType> gd;
// map to store objects and their prefixes
private static Map<String, String> keyPrefixMap;
{
// map to hold global describe data
private static Map<String,Schema.SObjectType> gd;
// map to store objects and their prefixes
private static Map<String, String> keyPrefixMap;
// to hold set of all sObject prefixes
private static Set<String> keyPrefixSet;
private static void init() {
// get all objects from the org
gd = Schema.getGlobalDescribe();
// to store objects and their prefixes
keyPrefixMap = new Map<String, String>{};
//get the object prefix in IDs
keyPrefixSet = gd.keySet();
// fill up the prefixes map
for(String sObj : keyPrefixSet)
{
Schema.DescribeSObjectResult r = gd.get(sObj).getDescribe();
String tempName = r.getName();
String tempPrefix = r.getKeyPrefix();
keyPrefixMap.put(tempPrefix, tempName);
}
}
public static String GetKeyPrefix(String ObjId)
{
init() ;
String tPrefix = ObjId;
tPrefix = tPrefix.subString(0,3);
//get the object type now
String objectType = keyPrefixMap.get(tPrefix);
return objectType;
}
}
private static Set<String> keyPrefixSet;
private static void init() {
// get all objects from the org
gd = Schema.getGlobalDescribe();
// to store objects and their prefixes
keyPrefixMap = new Map<String, String>{};
//get the object prefix in IDs
keyPrefixSet = gd.keySet();
// fill up the prefixes map
for(String sObj : keyPrefixSet)
{
Schema.DescribeSObjectResult r = gd.get(sObj).getDescribe();
String tempName = r.getName();
String tempPrefix = r.getKeyPrefix();
keyPrefixMap.put(tempPrefix, tempName);
}
}
public static String GetKeyPrefix(String ObjId)
{
init() ;
String tPrefix = ObjId;
tPrefix = tPrefix.subString(0,3);
//get the object type now
String objectType = keyPrefixMap.get(tPrefix);
return objectType;
}
}
Now how you can use this? Simply save the class and pass your object Id in method "GetKeyPrefix" like this
//a0090000002QGKu will be your object Id
System.debug('::::::: '+ KeyPrefix.GetKeyPrefix('a0090000002QGKu') );
No comments:
Post a Comment