1

我正在从另一个批处理类的完成方法调用批处理类并面临上述错误

方法代码:

public class BatchPublicCampaignsToGoogle 
implements Database.Batchable<SObject>, Database.Stateful, 
           Database.AllowsCallouts {

    public void finish(Database.BatchableContext BC){   
        if(newBatch == true) {           
            CalendarSettings__c c = 
                [Select Id, Name, CalendarId__c,
                 CalendarQuery__c,FieldToDisplay__c 
                 from CalendarSettings__c 
                 WHERE Name = 'Internal marketing Calendar' LIMIT 1] ;

            BatchPublicCampaign bjob = new BatchPublicCampaign();
            Database.executeBatch(bjob);
        }
    }

}

但我收到以下错误:

Database.executeBatch cannot be called from a batch or future method. 

完成批处理请求后,我试图再次调用它(我必须调用它两次)。所以我称之为。

我该如何解决这个错误?

4

2 回答 2

2

Apex 批处理类 最低版本应该是 27.0 我使用的是 25.0 这就是我遇到这个问题的原因!!

于 2013-03-26T11:37:30.517 回答
1

正如我在您的另一个问题Execution Confusion in Batch class Apex中提到的,冬季 13 中引入了从 finish 方法将批处理作业链接在一起的能力。

Winter 13 对应于 API 版本 26.0,因此您的批处理类将需要使用该版本或更高版本才能使用链接。

于 2013-03-27T02:25:58.933 回答