【Salesforce】在Apex中使用sObject
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【Salesforce】在Apex中使⽤sObject sObject对象的定义
Salesforce中的标准对象或⾃定义对象在Apex中使⽤时被称作“sObject”。
sObject对象的⼀个实例相当于Salesforce中的⼀条记录。
⽐如:Account代表了“客户”对象,Contact代表了“联系⼈”对象。
在Apex中使⽤sObject对象
⽤new关键字可以建⽴sObject对象,并初始化某些字段。
Account acc = new Account(Name='test name', NumberOfEmployees=200);
在代码中可以⽤“.”来连接对象和字段。
Account acc = new Account();
acc.Phone = '12345678';
= 'test name';
API名字
每个对象和字段都有⼀个唯⼀的名字,这个名字被称为API名字(API Name)。
⽐如“客户”的API名字是“Account”,“名字”字段的API名字是“Name”,“创建⼈”字段的API名字是“CreatedBy”。
后缀
对于⾃定义对象和字段,它们的API名字必须以“__c”结尾。
⽐如:有⼀个“地址”⾃定义对象,其API名字是“Address__c”⽽不能是“Address”
当⼀个字段的类型是⾃定义关系类型,那么该字段的后缀不⽤“__c”,⽽⽤“__r”。
对于外部对象,其API名字以“__x”结尾。
sObject泛型
所有的对象都是sObject类型,所以当创建任何⼀个对象时,可以声明为sObject类型。
sObject obj1 = new Account();
sObject obj2 = new Student__c();
上⾯的代码建⽴了⼀个“Account”(标准对象)和“Student__c”(⾃定义对象)实例。
sObject类型可以转换为某⼀对象类型,反之则不⾏。
另外,新建sObject类型的实例只能通过函数newSObject(),⽽不能通过new关键字。
sObject sObj = Schema.getGlobalDescribe().get('Account').newSObject();
// 这⾥还是需要声明创建的sObject类型,⽐如这⾥的“Account”
// sObject obj = new sObject(); // 错误的⽤法
sObject的权限
⼀般情况下,Apex代码在运⾏时是不考虑当前⽤户对对象和字段的权限的,匿名代码段除外。
如果想让Apex代码在执⾏的时候考虑当前⽤户的权限,可以调⽤Schema.DescribeSObjectResult和Schema.DescribeFieldResult类中的功能。
代码⽰例
// 使⽤Schema.DescribeSObjectResult类的⽅法来检查
Schema.DescribeSObjectResult objectDescribe = Example_Object__c.SObjectType.getDescribe();
// 检查该对象是否可以被创建
Boolean isCreateable = objectDescribe.isCreateable();
// 检查该对象是否可以被更新
Boolean isUpdateable = objectDescribe.isUpdateable();
// 检查当前⽤户对该对象是否有权限
Boolean isAccessible = objectDescribe.isAccessible();
// 检查该对象是否可以被删除
Boolean isDeletable = objectDescribe.isDeletable();
// 直接⽤Schema.SObjectType来检查
Boolean isCreateable = Schema.SObjectType.Example_Object__c.isCreateable();
Boolean isUpdateable = Schema.SObjectType.Example_Object__c.isUpdateable();
Boolean isAccessible = Schema.SObjectType.Example_Object__c.isAccessible();
Boolean isDeletable = Schema.SObjectType.Example_Object__c.isDeletable();
// 使⽤Schema.DescribeFieldResult类的⽅法来检查
Schema.DescribeFieldResult fieldDescribe = Example_Object__c.SObjectType.fields.Example_Field__c.getDescribe(); Boolean isCreateable = fieldDescribe.isCreateable();
Boolean isUpdateable = fieldDescribe.isUpdateable();
Boolean isAccessible = fieldDescribe.isAccessible();
// 直接使⽤Schema.sObjectType来检查
Boolean isCreateable = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isCreateable();
Boolean isUpdateable = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isUpdateable(); Boolean isAccessible = Schema.sObjectType.Example_Object__c.fields.Example_Field__c.isAccessible();。