我们已成功将我们的v2 QBO迁移到v3,之后在我们的生产中我们遇到了一个客户的问题。他们在QBO帐户中拥有超过100个客户。他们想将它们复制到我们的应用程序中。我们实现了这样的导入:
DataService service = getDataService(owner); // obtain DataService via Access Keys
List<com.intuit.ipp.data.Customer> customers =
service.findAll(new com.intuit.ipp.data.Customer());
for (com.intuit.ipp.data.Customer customer : customers) {
createCustomer(customer, owner); // this is our internal method to create
}
如Class Library Reference中所述 - 方法findAll是
Method to retrieve all records for the given entity.
但我们的客户正在从他的QBO v3帐户中获得前100个实体(客户&#39; s)。如果他执行相同的导入操作 - 他将再次获得相同的前100个实体。此方法不允许任何分页选项。
所以问题是,如何获得所有的实体?
答案 0 :(得分:2)
您应该将查询端点与页面过滤器一起使用。
以下查询获取客户1 - 10:
String query = select($(customer)).skip(0).take(10).generate();
输出 - SELECT * FROM Customer STARTPOSITION 1 MAXRESULTS 10
以下查询获取客户21 - 25:
String query = select($(customer)).skip(20).take(10).generate();
最后
QueryResult queryResult = service.executeQuery(query);
由于
答案 1 :(得分:2)
要获取指定企业的所有客户,首先需要获得他们的计数,然后,如前面的答案所述,通过&#34;采取&#34;方法:
Integer customersTotal = service.executeQuery(selectCount(_customer).generate()).getTotalCount();
QueryResult queryResult = service.executeQuery(select($(_customer)).skip(0).take(customersTotal).generate());
List<? extends IEntity> entities = queryResult.getEntities();
for (IEntity entity : entities) {
if (entity instanceof com.intuit.ipp.data.Customer) {
createCustomer((com.intuit.ipp.data.Customer) entity, owner);
}
}