通常在Salesforce的Apex代码和测试中,都会不可避免的需要用到sObject的RecordTypeID,一般情况下,有两种方式来获取:
方式一:
如果足够熟悉RecordType表的话,通过SOQL,定义一个方法,通过传入sObjectType和你需要的Record Type
Name就可以获取对应的RecordType的ID了。
public Id getRecordTypeIdBySobjectTypeAndName(String sObjType,String recordTypeName){
return [select Id, Name from RecordType where SobjectType = :sObjType and Name = :recordTypeName].Id;
}
方式二:
对于方式一,其实无形之中会增加在Salesforce中的Too many queries的概率,毕竟你增加了一个Query,本来query都是要省着用的,而且有时候会不小心放在for-loop里面,就很尴尬了。所以,其实是有方法不通过Query来获取ID的:
Id devRecordTypeId = Schema.SObjectType.Account.getRecordTypeInfosByName().get('Development').getRecordTypeId();
解析:
Schema.SObjectType.(sObjectd API name).getRecordTypeInfosByName().get('recordType的Name').getRecordTypeId();
这样就可以动态的在任何时候,任何地方,获取你想要的RecordType的ID,进而进行后续操作了,而且没有占用query次数。
网友评论