I have created a batch APEX, below code
global class batchApexJob implements Database.Batchable<sObject> {
global Database.QueryLocator start(Database.BatchableContext BC) {
String UsrQuery='';
UsrQuery = 'SELECT Id,isActive,NewlastLoginDate__c,Notification_email_Sent__c,Newisactive__c,LastLoginDate,Email,ManagerId,Manager.Name FROM USER WHERE isActive = true AND LastLoginDate !=null';
return Database.getQueryLocator(UsrQuery);
}
global void execute(Database.BatchableContext BC, List<user> usrRecords) {
List<User> localuseRec = new List<User>();
List<Id>Ids = new List<Id>();
boolean isAccFound = false;
EmailTemplate etId=[Select id from EmailTemplate where name = 'ManagerEmail' limit 1];
List<Messaging.MassEmailMessage> listofemails = new List<Messaging.MassEmailMessage>();
if(usrRecords.size()>0){
for (User u : usrRecords){
if(System.now() > u.LastLoginDate.addDays(60)){
for (Account a : [Select Id,ownerId from Account where ownerId =:u.Id LIMIT 1]){
// for less than 90 days
isAccFound = true;
system.debug('@@@'+u);
Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage ();
mail.setTargetObjectIds(ids);
mail.setSenderDisplayName('Notification 1');
mail.setTemplateId(etId.id);
mail.setSaveAsActivity (false);
listofemails.add(mail);
// Messaging.SendEmailResult[] r1 = Messaging.sendEmail(new Messaging.MassEmailMessage [] { mail });
// system.debug('Email Result1:-'+r1);
}
}
localuseRec.add(u);
}
Messaging.SendEmailResult[] r4 = Messaging.sendEmail(listofemails);
}
Database.SaveResult[] results = Database.update(localuseRec,false);
}
global void finish(Database.BatchableContext BC) {
}
}
In the for loop, I am using Query for Account with LIMIT 1
(Account a : [Select Id,ownerId from Account where ownerId =:u.Id LIMIT 1]){
But still I am getting ERROR
08:53:57.0 (861836685)|SOQL_EXECUTE_BEGIN|[29]|Aggregations:0|SELECT Id, ownerId FROM Account 08:53:57.0 (861859519)|EXCEPTION_THROWN|[29]|System.LimitException: Too many SOQL queries: 201 08:53:57.0 (861947703)|HEAP_ALLOCATE|[29]|Bytes:30 08:53:57.0 (861996900)|FATAL_ERROR|System.LimitException: Too many SOQL queries: 201
As per the governor limits for each transaction i can query till 200 records so I am confused as in why I am getting this error since its LIMIT 1 for Account SOQL https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm
database.executeBatch([BatchIntance],1)