我有一个代码为
的批次类public class BatchDeleteEvents实现Database.Batchable,Database.Stateful,Database.AllowsCallouts {
private String query;
private String pageToken ;
private String CalendarId;
private String accessToken;
public BatchDeleteEvents(String CalendarId, String accessToken){
this.query = 'Select Id, Name from Event__c'; // Query to get the CalendardID (Google ID)
this.CalendarId =CalendarId;
this.accessToken =accessToken;
}
public Database.Querylocator start(Database.BatchableContext BC){
return Database.getQueryLocator(query);
}
public void execute(Database.BatchableContext BC, List<sObject> scope){
System.debug('Entered in delete Batch');
for(Event__c c : (List<Event__c>)scope)
GCalendarUtil.doApiCall(null,'DELETE','https://www.googleapis.com/calendar/v3/calendars/'+CalendarId+'/events/'+c.name,accessToken);
delete scope;
}
public void finish(Database.BatchableContext BC){
for(CalendarSettings__c c: [Select Id, Name, CalendarId__c,CalendarQuery__c,FieldToDisplay__c from CalendarSettings__c])
{ BatchPublicCampaignsToGoogle bjob = new BatchPublicCampaignsToGoogle(c.CalendarQuery__c,c.CalendarId__c,c.FieldToDisplay__c);
Database.executeBatch(bjob,9); // This is set to process 9 records, allowing 1 extra callout for refresh token in case needed.
}
}
}
我正在用批次9运行它
BatchDeleteEvents del = new BatchDeleteEvents(c.CalendarId__c,accessToken); Database.executeBatch(DEL,9);
我正面临错误
FATAL_ERROR|System.DmlException: Delete failed. First exception on row 0 with id a0290000007fCbEAAU; first error: ENTITY_IS_DELETED, entity is deleted: []
Class.BatchDeleteEvents.execute: line 26, column 1
我没有使用删除命令的地方为什么我面临这个错误任何一个请帮忙??
答案 0 :(得分:4)
也许您删除了for循环中的所有范围将其更改为
for(Event__c c : (List<Event__c>)scope){
GCalendarUtil.doApiCall(null,'DELETE','https://www.googleapis.com/calendar/v3/calendars/'+Cal endarId+'/events/'+c.name,accessToken);
}
delete scope;