Scenario:
Root Cause :
Trigger Code
Trigger CaseTrigger on Case (Before Insert,Before Update,After insert) { if(Trigger.isBefore && (Trigger.isInsert || Trigger.isUpdate)) { CaseTriggerHandler.duplicateCheck(Trigger.new); } }
Handler Class
Public class CaseTriggerHandler { public static void duplicateCheck(List<Case> TriggerNew) { for (Case cs : TriggerNew) { if(cs.status__c!=Trigger.OldMap.get(cs.Id).status__c) { System.debug('Status has changed'); } } } }
When your trying save above handler code you will end up with Field expression not allowed for generic SObject .
Solution:
The reason behind is that Trigger.OldMap is a generic variable that means it will be used for all objects so when your using this variable you need to tell the compiler what type of the SObject your referring from Trigger.OldMap. I have highlighted that code change in yellow color in below code.Public class CaseTriggerHandler { public static void duplicateCheck(List<Case> TriggerNew) { for (Case cs : TriggerNew) { if(cs.status__c!=((Map<Id,Case>)Trigger.OldMap).get(cs.Id).status__c) { System.debug('Status has changed'); } } } }
Thanks for visiting..hope this helps you!
No comments:
Post a Comment