Salesforce: System.Date()在scheduled job使用时的注意事项

今天帮忙客户查看一个scheduled job的问题。

scheduled job的大致功能是每天定时通过batch去删除某个对象前一天的数据。

但是客户发现虽然每天batch都有执行,但是查询出来的数据却始终是0。

经过检查代码发现,代码中使用System.today()赋值给了一个final类型的变量

private final Date currentDate = System.today();

再进行sql查询:
SELECT Id FROM BB_Audit_Log__c WHERE Audit_Datestamp__c < :currentDate
 
问题即出现在final的使用上。
如果将值赋给了final类型的变量,则currentDate的值将始终保持为scheduled job创建的那一天的日期。
所以导致batch无法正常工作。
 
所以解决办法就是去掉final属性。

 

posted @ 2020-08-27 17:14  Clsriz  阅读(183)  评论(0编辑  收藏  举报