我设置Salesforce fetchSize = 100,但它不会为我的查询获取100个元素的元素。因此,我希望能够将ConsumerIterator中的单个结果收集到一个列表中,以100个为一组交付给批处理。下面是代码。这是一个正确的方法吗?我将不胜感激如何正确地做到这一点。我想分批处理所有ConsumerIterator元素。如果批次小于50,我想处理该批次。我的尝试低于
ConsumerIterator<HashMap<String,Object>> iter=
(ConsumerIterator<HashMap<String,Object>>)obj;
List<HashMap<String,Object>> l=new CopyOnWriteArrayList<>();
while(iter.hasNext()){
Object payload=iter.next();
if(l.size()<50){
l.add((HashMap<String,Object>)payload);
}else{
write(l);
}
public int [] write(List<HashMap<String,Object> list)
{
synchronized(list)
{
ArrayList newList=copy(list);
save(newList);
}
+
答案 0 :(得分:0)
在Salesforce查询中,您可以追加“限制100”;在查询结束时,只能获取列表中的100个元素。
答案 1 :(得分:0)
我通过使用100的获取大小解决了这个问题,然后使用生成的ConsumerIterator来聚合元素。