Salesforce Apex触发器创建Account自动生成Contact报Expected '{'错如何解决
报错原因
1. 直接语法错误(触发Expected '{'报错)
Apex是大小写敏感的编程语言,代码中方法的修饰符Static首字母大写不符合Apex语法规范,正确的静态方法修饰符应为全小写的static。编译器识别到不符合预期的大写Static关键字后,无法正确匹配后续的方法定义结构,就会抛出期望遇到{但未匹配到的语法错误。
2. 隐含的业务逻辑错误(语法修复后运行仍会报错)
代码中手动给新建的Contact记录赋值Id = ac.Id是错误操作:
- Salesforce插入sObject记录时,Id是系统自动生成的,不允许开发者在插入前手动指定Id值,语法修复后执行会抛出INVALID_FIELD_FOR_INSERT_UPDATE类型的运行时错误。
- 如需关联Contact和Account,应该给Contact的
AccountId字段赋值为Account的Id,而非直接覆盖Contact自身的Id。
修复方案
修正后的代码如下:
public class CallCreateNewContactTrigger { // 大写的Static改为小写static public static void CreateContactMethod(List<Account> accList){ List<Contact> conList= new List<Contact>(); for(Account ac : accList){ Contact cc = new Contact(); cc.LastName = ac.Name; // 用AccountId关联所属账户,不要给Contact自身的Id赋值 cc.AccountId = ac.Id; conList.add(cc); } insert conList; } }
额外注意:配套的触发器需要绑定Account的after insert事件,不要使用before insert事件,因为before insert阶段Account的Id还未生成,赋值给Contact.AccountId会是空值。
内容的提问来源于stack exchange,提问作者Kanthi Kumar Tippani
相关产品推荐
相关产品推荐

